Diferencia entre revisiones de «Tocadiscos caja de ritmos»

De fabwiki
Ir a la navegación Ir a la búsqueda
Sin resumen de edición
 
(No se muestra una edición intermedia de otro usuario)
Línea 103: Línea 103:
=Codigo 3=
=Codigo 3=
<pre>
<pre>
#define led 13
#define led 13
#define buzzer 11
#define buzzer 11
#define hall0 A0
#define hall0 A0
#define hall1 A1
#define hall1 A1


uint16_t hall0val;
const int OUT0_PIN = 11;
uint16_t hall1val;
const int OUT1_PIN = 10;
 
const int OUT0_PIN = 6;
const int OUT1_PIN = 13;
const int DURACION_MS = 50;
const int DURACION_MS = 50;
const int HALL_OFFSET = 640;
const int HALL_OFFSET = 640;
const int HALL_THRES = 50;
const int HALL_THRES = 50;
uint16_t hall0val;
uint16_t hall1val;


void setup () {
void setup () {
   pinMode (led, OUTPUT);
   pinMode (led, OUTPUT);
   pinMode (buzzer, OUTPUT);
   pinMode (buzzer, OUTPUT);
   pinMode (OUT0, OUTPUT);
   pinMode (OUT0_PIN, OUTPUT);
   pinMode (OUT1, OUTPUT);
   pinMode (OUT1_PIN, OUTPUT);
 
   Serial.begin(9600);
   Serial.begin(9600);
}
}


int out0_off_time = 0;
int out1_off_time = 0;
bool out0_on = false;
bool out0_on = false;
bool out1_on = false;


void loop () {
void loop () {
  int out0_off_time = 0;
  int out1_off_time = 1;
  bool out0_on = false;
  bool out1_on = false;
   hall0val = analogRead(hall0) - HALL_OFFSET;
   hall0val = analogRead(hall0) - HALL_OFFSET;
 
   hall1val = analogRead(hall1) - HALL_OFFSET;
   hall1val = analogRead(hall1) - HALL_OFFSET;


   //Serial.print("0, "); Serial.print("300, ");
   // Serial.println("0 300 " + String(hall0val) + " " + String(hall1val));
  Serial.print(hall0val);
  Serial.print(" ");
  Serial.println(hall1val);


   if (millis() > out0_off_time && out0_on == true) {
   if (millis() > out0_off_time && out0_on == true) {
     digitalWrite(OUT0, LOW);
     digitalWrite(OUT0_PIN, LOW);
     out0_on = false;
     out0_on = false;
    Serial.println("1");
   }
   }


   if (millis() > out1_off_time && out1_on == true) {
   if (millis() > out1_off_time && out1_on == true) {
     digitalWrite(OUT1, LOW);
     digitalWrite(OUT1_PIN, LOW);
     out0_on = false;
     out1_on = false;
   }
    Serial.println("2");
   }  


   if (hall0val > HALL_THRES) {
   if (hall0val > HALL_THRES) {
     digitalWrite(OUT0, HIGH);
    int old = out0_off_time;
     digitalWrite(OUT0_PIN, HIGH);
     out0_off_time = millis() + DURACION_MS;
     out0_off_time = millis() + DURACION_MS;
     out0_on = true;
     out0_on = true;
    Serial.println("3");
   }
   }
    
    
   if (hall1val > HALL_THRES) {
   if (hall1val > HALL_THRES) {
     digitalWrite(OUT1, HIGH);
     digitalWrite(OUT1_PIN, HIGH);
     out1_off_time = millis() + DURACION_MS;
     out1_off_time = millis() + DURACION_MS;
     out1_on = true;
     out1_on = true;
    Serial.println("4"); 
   }
   }
}
}
</pre>
</pre>

Revisión actual - 20:22 15 jul 2026


La idea es que el usuario quiere generar un ritmo. El usuario va a colocar imanes sobre la superficie de un disco giratorio. Las posiciones de los imanes representarán los tiempos de los sonidos de la caja de ritmo. Los imanes van a moverse. Sensores estacionarios de campos magnéticos van a detectar cuando los imanes pasan por el sensor.

Motor original

1290 rpm

84.7 cm de cinturón de goma

Motor Paso a Paso

Sensores Hall (para detectar campos magnéticos)

Videos

Codigo 1


#define led 13  
#define buzzer 11
#define analogPin A0

uint16_t analogVal;

void setup () {
  pinMode (led, OUTPUT);
  pinMode (buzzer, OUTPUT);
  Serial.begin(9600);
}

void loop () {
  analogVal = analogRead(analogPin);
  analogVal -= 640;
  

  Serial.print("0, "); Serial.print("300, "); 
  Serial.println(analogVal);
  if (analogVal > 50) {
    digitalWrite(led, HIGH);
    digitalWrite(buzzer, HIGH);
  }
  else {
    digitalWrite(led, LOW);
    digitalWrite(buzzer, LOW);
  }
  delayMicroseconds(1000);
}

Codigo 2

#define led 13  
#define buzzer 11
#define hall0 A0
#define hall1 A1

uint16_t hall0val;
uint16_t hall1val;

void setup () {
  pinMode (led, OUTPUT);
  pinMode (buzzer, OUTPUT);
  Serial.begin(9600);
}

void loop () {
  hall0val = analogRead(hall0);
  hall0val -= 640;
  
  hall1val = analogRead(hall1);
  hall1val -= 640;

  //Serial.print("0, "); Serial.print("300, "); 
  Serial.print(hall0val);
  Serial.print(" ");
  Serial.println(hall1val);

  if (hall0val > 50 || hall1val > 50) {
    digitalWrite(led, HIGH);
    digitalWrite(buzzer, HIGH);
  }
  else {
    digitalWrite(led, LOW);
    digitalWrite(buzzer, LOW);
  }
 // delayMicroseconds(300000);
   delay(500);
}

Codigo 3

#define led 13
#define buzzer 11
#define hall0 A0
#define hall1 A1

const int OUT0_PIN = 11;
const int OUT1_PIN = 10;
const int DURACION_MS = 50;
const int HALL_OFFSET = 640;
const int HALL_THRES = 50;

uint16_t hall0val;
uint16_t hall1val;

void setup () {
  pinMode (led, OUTPUT);
  pinMode (buzzer, OUTPUT);
  pinMode (OUT0_PIN, OUTPUT);
  pinMode (OUT1_PIN, OUTPUT);
  Serial.begin(9600);
}

int out0_off_time = 0;
int out1_off_time = 0;
bool out0_on = false;
bool out1_on = false;

void loop () {
  hall0val = analogRead(hall0) - HALL_OFFSET;
  hall1val = analogRead(hall1) - HALL_OFFSET;

  // Serial.println("0 300 " + String(hall0val) + " " + String(hall1val));

  if (millis() > out0_off_time && out0_on == true) {
    digitalWrite(OUT0_PIN, LOW);
    out0_on = false;
    Serial.println("1");
  }

  if (millis() > out1_off_time && out1_on == true) {
    digitalWrite(OUT1_PIN, LOW);
    out1_on = false;
    Serial.println("2");
  }   

  if (hall0val > HALL_THRES) {
    int old = out0_off_time;
    digitalWrite(OUT0_PIN, HIGH);
    out0_off_time = millis() + DURACION_MS;
    out0_on = true;
    Serial.println("3");
  }
  
  if (hall1val > HALL_THRES) {
    digitalWrite(OUT1_PIN, HIGH);
    out1_off_time = millis() + DURACION_MS;
    out1_on = true;
    Serial.println("4");   
  }
}