Hola.
Estoy realizando practicas que vienen en el libro titulado:
Arduino para jovenes y no tan jovenes
De las cuales tengo dudas y que en el libro no vienen bien explicadas, creo este tema por si a alguien le ocurre lo mismo y poder ayudarnos.
Pues bien comienzo yo, en la practica Semaforo para peatones cuyo codigo es el siguiente:
const byte buttonPin = 4; // pin para el boton
const byte redLedPin = 5; // pin para el led rojo
const byte yellowLedPin= 6; // pin para el led amarillo
const byte greenLedPin = 7; // pin para el led verde
const byte personLedPin = 13; // pin para led peatones
int lightStatus = 0;
void setup() {
pinMode(personLedPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
pinMode(yellowLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
// configuracion para el pulsador
pinMode(buttonPin, INPUT);
digitalWrite( buttonPin, HIGH); // se activa la resistencia pull-up
}
void loop() {
if (!digitalRead(buttonPin)){//si se pulsa
lightStatus=0; // se fuerza a rojo para coches
}
// dependiendo de la luz que se debe mostrar tiene distintos parámetros la llamada
switch (lightStatus){
case 0: //Rojo
showLight(redLedPin, 3000); // 3 segundos
break;
case1: // verde
showLight(greenLedPin, 2000); //2 segundos
break;
Case2: // amarillo
showLight(lleyowLedPin, 1000); // 1 segundo
break;
/**
*Enciende le led que se le indique.
*Los parametros son el Led a encender y el tiempo que debe de estar encendido
*/
void showLight( int ledPin, int maxTime){
static int lastPin =0;// ultimo led encendido
static unsigned long startTime=0; // tiempo desde que se encendio el Led
/*si el led actualmente encendido no concuerda con el que se debe encender
* entonces apagar el led encendido, encender el nuevo y poner el contador de tiempo a 0*/
if (ledPin !=lastPin){
//mirar el semaforo de peatones
if (ledPin == redLed Pin){
//si es rojo para coches, es verde para peatones
DigitalWrite (personLedPin, HIGH);
}else {
digitalWrite(personLedPin; LOW);
}
startTime=millis();
digitalWrite(lastPin, LOW);
lastPin= ledPin;
digitalWrite(ledPin, HIGH);
delay(5); // para garantizar la estabilidad
}
unsigned long elapsedTime= millis()-starTime; // tiempo pasada desde que se encendio el led
if ( (elapsedTime) > maxTime) {// si es mayor que lo esperado, pasar al siguiente ciclo de led
lightStatus++;
if (ligtStatus > 2) lightStatus=0;// solo hay 3 led, comenzamos de nuevo por el 0
}
}
}
}
al verificar me dice:
Arduino:1.8.19 (Windows 10), Tarjeta:"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"
C:\Users\manol\OneDrive\Documentos\Arduino\Semaforo\Semaforo.ino: In function 'void loop()':
Semaforo:27:3: error: 'showLight' was not declared in this scope
showLight(redLedPin, 3000); // 3 segundos
^~~~~~~~~
Semaforo:33:13: error: 'lleyowLedPin' was not declared in this scope
showLight(lleyowLedPin, 1000); // 1 segundo
^~~~~~~~~~~~
C:\Users\manol\OneDrive\Documentos\Arduino\Semaforo\Semaforo.ino:33:13: note: suggested alternative: 'yellowLedPin'
showLight(lleyowLedPin, 1000); // 1 segundo
^~~~~~~~~~~~
yellowLedPin
Semaforo:39:43: error: a function-definition is not allowed here before '{' token
void showLight( int ledPin, int maxTime){
^
exit status 1
'showLight' was not declared in this scope
