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 | Las posiciones de los imanes representarán los tiempos de los sonidos de la caja de ritmo. | ||
Los imanes | Los imanes van a moverse. | ||
Sensores estacionarios de campos magnéticos | 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> | ||