hola, este código me manda error en donde dice begin, pero tengo entendido que para el arduino uno r3 no se utiliza la instrucción de begin, sino otra, por favor díganme cual es el error de este código que al momento de compilarlo me marca error, esto es un contador
int LED = 13;
int Boton = 7;
int valor = 0;
int contador = 0;
int estadoanteriorboton = 0;
void setup()
{
beginSerial(9600);
pinMode(LED, OUTPUT); // inicializa como salida digital el pin 13
pinMode(Boton, INPUT); // inicializa como entrada digital el 7
}
void loop()
{
valor = digitalRead(Boton); // lee el valor de la entrada digital pin 7
digitalWrite(LED, valor);
if(valor != estadoanteriorboton){
if(valor == 1){
contador++;
printInteger(contador);
serialWrite(10);
serialWrite(13);
}
}
estadoanteriorboton = valor;
}
beginSerial
should be Serial.begin
serialWrite
should be Serial.write
You do not have a printInteger function in your code.
Hola, buenos días, es de hace tiempo est ehilo pero tengo un problema similar, tras corregir me indica que el (printInteger was not declared in this scope) no lo tengo como función, alguan ayuda?
gracias.
int LED=13;
int Boton=7;
int valor=0;
int contador=0;
int estadoanteriorboton=0;void setup() {
Serial.begin(9600);
pinMode(LED,OUTPUT);
pinMode(Boton,INPUT);
digitalWrite(Boton,HIGH);}
void loop() {
valor=digitalRead(Boton);
digitalWrite(LED,!valor);
if(valor!=estadoanteriorboton){
if (valor==1){
contador++;
printInteger(contador); //<==== error was not declared in this scope
Serial.write(10);
Serial.write(13);
}
}
int LED=13;
int Boton=7;
int valor=0;
int contador=0;
int estadoanteriorboton=0;void setup() {
Serial.begin(9600);
pinMode(LED,OUTPUT);
pinMode(Boton,INPUT);
digitalWrite(Boton,HIGH);}
void loop() {
valor=digitalRead(Boton);
digitalWrite(LED,!valor);
if(valor!=estadoanteriorboton){
if (valor==1){
contador++;
Serial.print(contador); // <===forma correcta de función en vez de printInteger(contador)verdad?
Serial.write(10);
Serial.write(13);
}
}
estadoanteriorboton=valor;
}
al monitorizar veo que cuando pulso el pulsador una vez, este marca:
1
2
3
De golpe, si vuelvo a pulsar vuelve a marcar otros 3-4 digitos más, es normal, dónde esoty fallando?
Gracias.
void loop() {
valor=digitalRead(Boton);
digitalWrite(LED,!valor);
if(valor!=estadoanteriorboton){
delay(20);
if (valor==1){
contador++;
Serial.println(contador); // si es la forma correcta
//Serial.write(10); y usar println elimina el uso de estas dos lineas
//Serial.write(13);
}
}
estadoanteriorboton = valor;
}
El programa espera la pulsación del botón. Cada vez que viene de un 0 (estadoanteriorboton) a 1 (valor) incrementa contador y lo imprime. Yo te cambié a Serial.println(contador) para simplificar las dos lineas subsiguientes.
Si te aparecen varios números es porque estas experimentando rebotes.
Le agregué un delay y puedes modificar el valor interno a no mas de 50 mseg.
Muchas Gracias, Así es, acabo de llegar de currar, y no he podido resistir el probarlo y sí es correcto, funciona muy bien además he añadido límite cíclico de contador hasta 10 y reinicio, y va bien, no hay rebote gracias al delay y me ahorro las lineas como bien indicas al emplear "println"
Por tanto como código final queda así para quien venga como yo por detrás...
Contador de 0 hasta 10 y reinicia desde cero:
int LED=13;
int Boton=7;
int valor=0;
int contador=0;
int estadoanteriorboton=0;
void setup() {
Serial.begin(9600);
pinMode(LED,OUTPUT);
pinMode(Boton,INPUT);
digitalWrite(Boton,HIGH);
}
void loop() {
valor=digitalRead(Boton);
digitalWrite(LED,!valor);
if(valor!=estadoanteriorboton){
delay(20);
if (valor==1){
contador++;
Serial.println(contador);
if (contador==10){
contador=0;
}
}
}
estadoanteriorboton = valor;
}
Gracias.
bueno si esta terminado, edita el título y ponle solucionado.