Diferencia entre revisiones de «Tocadiscos caja de ritmos»

Sin resumen de edición
 
(No se muestran 6 ediciones intermedias de 2 usuarios)
Línea 3: Línea 3:
La idea es que el usuario quiere generar un ritmo.
La idea es que el usuario quiere generar un ritmo.
El usuario va a colocar imanes sobre la superficie de un disco giratorio.
El usuario va a colocar imanes sobre la superficie de un disco giratorio.
Las posiciones de los imanes representará los tiempos de los sonidos de la caja de ritmo.
Las posiciones de los imanes representarán los tiempos de los sonidos de la caja de ritmo.
Los imanes va a moverse.
Los imanes van a moverse.
Sensores estacionarios de campos magnéticos va a detectar cuando los imanes pasan por el sensor.
Sensores estacionarios de campos magnéticos van a detectar cuando los imanes pasan por el sensor.


=Motor original=
=Motor original=
Línea 27: Línea 27:
* https://cloud.undernet.uy/s/a6CEK3JqqbARwpn
* https://cloud.undernet.uy/s/a6CEK3JqqbARwpn


=Codigo=
=Codigo 1=
<pre>
<pre>


Línea 58: Línea 58:
   }
   }
   delayMicroseconds(1000);
   delayMicroseconds(1000);
}
</pre>
=Codigo 2=
<pre>
#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);
}
</pre>
=Codigo 3=
<pre>
#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"); 
  }
}
}
</pre>
</pre>