Código arduino simple

Hola a todos,

Estoy dando mis primeros pasos con arduino y me quede estancado en la resulocion de un codigo, por eso vengo a pedir ayuda a este foro.

Descripcion de lo que estoy intentando hacer:

estoy trabajando en un dispenser de pastillas y para eso tengo un sensor de obstaculos y un buzzer, cuando la pastilla cae es detectada por el sensor y ejecuta esta secuencia en el buzzer:

void loop()  {
   hayObstaculo = digitalRead(SENSOR);

if (hayObstaculo == HIGH){
  for(int i = 0; i < 10; i++){
analogWrite(BUZER, HIGH);
delay(250);
analogWrite(BUZER, LOW);
delay(250);
}

hasta aqui esta todo perfecto el tema es que quiero interrumpir esa secuencia si sucede que ESE MISMO SENSOR detecta que la mano esta retirando la pastilla. esto es para que una vez que la persona saque la pastilla la alarma no quede sonando sino que se detenga.

que me recomiendan?

gracias.

Excelente proyecto...
Ayuda #1: copie/pegue su código en su IDE, luego formatee automáticamente su código, luego vuelva a pegar su código en su primera publicación usando el botón "</>" para crear un código copiable (y legible).
Ayuda #2: ¿Qué microcontrolador usarás Y qué sensor detectará la píldora?

El analogWrite se usa incorrectamente en este contexto. analogwrite escribe en un pin PWM una señal proporcional al número indicado (de 0 a 255) . 0 apagado, 255 completamente encendido. analogwrite (BUZZER, HIGH) es lo mismo que analogwrite (BUZZER, 1), prácticamente apagado. Aunque podrías usar analogWrite (BUZZER,255) es más correcto usar:

digitalWrite (BUZZER,HIGH);

Para lo que quieres hacer algo sencillo y sin muchas complicaciones podría ser lo siguiente:

void loop() {
  if (digitalRead(SENSOR) == HIGH) {
    for (int i = 0; i < 10; i++) {
      digitalWrite(BUZER, HIGH);
      delay(250);
      if (digitalRead(SENSOR) == LOW) {break;}
      digitalWrite(BUZER, LOW);
      delay(250);
      if (digitalRead(SENSOR) == LOW) {break;}

Saludos

this post from the Spanish part of the forum

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.