Go Down

Topic: Sketch Arduino (Read 156 times) previous topic - next topic

inesla

Jan 09, 2021, 02:01 pm Last Edit: Jan 17, 2021, 04:27 pm by surbyte Reason: Agregado de etiquetas para códigos/errores. Titulo editado
Buenas tardes!

Estoy intentando hacer un programa en el que una vez se pulse el pulsador:
1. se encienda un led verde y emita un pequeño sonido un zumbador
2.se apague
3. se encienda una led amarilla
4. se apague
5. se encienda una led roja y se emita un pequeño sonido con el zumbador
6. se apaguen ambos.

Para ello, he realizado el sketch pero no consigo adoptar las variables que debería tener el zumbador.

Muchas gracias.

Code: [Select]
// definición de las constantes
const int buttonPin = 12;     // pin del boton
const int ledpin1 = 4;       // pin del led verde
const int ledpin2 = 5;       // pin del led amarillo
const int ledpin3 =3;       //pin del led rojo
const int buzzerPin=9;      // pin del zumbador

// variable para el estado del botón
int buttonState = 0;         // variable para leer el estado del botón

// tono del zumbador
const int tone(buzzerPin)=600
const int noTone(buzzerPin)=0


void setup() {
 //pin del led verde como salida:
 pinMode (ledpin1, OUTPUT) ;
 //pin del led amarillo como salida:
 pinMode (ledpin2, OUTPUT) ;
 //pin del led rojo como salida:
 pinMode (ledpin3, OUTPUT) ;
  // pin del zumbador como salida:
 pinMode(buzzerPin, OUTPUT);
 // pin del botón como entrada:
 pinMode(buttonPin, INPUT);
}

void loop() {
 // lee el valor del estado del botón con pinBoton y lo guarda en la variable estadoBoton
 buttonState = digitalRead(buttonPin);

 // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
 if (buttonState == HIGH) {
   // turn LED on:
   digitalWrite(ledpin1, HIGH);
   tone (buzzerPin,600);
   delay(1000);
   // turn LED off:
   digitalWrite(ledpin1, LOW);
   noTone (buzzerPin);
   delay(3000);
   // turn LED on:
   digitalWrite(ledpin2, HIGH);
   tone(buzzerPin, 600);
   delay(500);
     // turn LED off:
   digitalWrite(ledpin2, LOW);
  noTone (buzzerPin);
   delay(3000);
      // turn LED on:
   digitalWrite(ledpin3, HIGH);
   tone(buzzerPin,600);
   delay(500);
      // turn LED off:
   digitalWrite(ledpin3, LOW);
   noTone(buzzerPin);
   delay(500);
   
 } else {
   // turn LED off:
   digitalWrite(ledpin1, LOW);
   digitalWrite(ledpin2,LOW);
   digitalWrite(ledpin3, LOW);
   noTone(buzzerPin);
   
   
 }
}

surbyte

#1
Jan 10, 2021, 02:21 am Last Edit: Jan 10, 2021, 02:22 am by surbyte
Moderador
Hola, inesla, bienvenido al foro Arduino.

Lamentablemente te llevas todos los premios por faltas a las normas del foro.
En el título no debe usarse la palabra Ayuda.
Menos aún escribir con mayúsculas porque es lo mismo que gritar y eso va no para este foro sino para cualquiera. Edita x 2.
El mismo debe ser descriptivo de lo que consultas.
Lo que leo no nos dice nada respecto a tu consulta.

Los códigos deben postearse usando etiquetas y no simplemente copiar y pegar un código como has hecho. Edita!!
Ahora lee lo que dejo a continuación.


Lee las Normas del foro


IsaacD55

Hola inelsa

Como veo es un código sencillo. Y creo que es como un semáforo.
A tu código solo elimina las siguientes líneas:
Code: [Select]
// tono del zumbador
//const int tone(buzzerPin)=600
//const int noTone(buzzerPin)=0

Por la manera en que tienes el código no es necesario que declares el tono del buzzer ni de cuando estará apagado antes del void setup  ya que en el void loop tienes el tono del buzzer y el tiempo en que estará apagado. 
Como nota adicional veo que no es un ciclo infinito porque veo el ciclo de tu código se inicia de nuevo al pulsar el botón (a menos que así en como lo quieres utilizar) y en tu explicación solo mencionas que al encender el led verde y rojo se active el buzzer y en tu código veo que cuando enciende el led amarillo también se activa el buzzer. Solo seria hacer este cambio: 
Code: [Select]
    // turn LED on:
    digitalWrite(ledpin2, HIGH);
    //tone(buzzerPin, 600); Eliminar esta linea
    delay(500);
      // turn LED off:
    digitalWrite(ledpin2, LOW);
   //noTone (buzzerPin); Eliminar esta linea
    delay(3000);

y que te quede asi:
Code: [Select]
    // turn LED on:
    digitalWrite(ledpin2, HIGH);
    delay(500);
      // turn LED off:
    digitalWrite(ledpin2, LOW);
    delay(3000);


Saludos

Go Up