Ejemplos clase 2

Encender y apagar el LED integrado 5 veces.

void setup() {
  pinMode(13, OUTPUT);

}

void loop() {
	for (int x=0; x<5; x++) {
	  digitalWrite(13,HIGH);
	  delay(500);
	  digitalWrite(13,LOW);
	  delay(500);
	}
}

Interruptor acciona LED

Conectamos un interruptor a los pines 2 y 4 del Arduino. Teóricamente podemos poner el pin 4 a +5V y luego leer el pin 2 para ver el estado, pero la lectura tiene ruido.

Para evitarlo debemos activar las resistencia de PULL UP internas del Arduino en el pin de entrada. La lectura con el interruptor abierto es entonces 5V. Ponemos la otra pata a masa, y cuanto el interruptor se cierre leeremos 0V, sin ruidos.

Además enviamos los datos por el puerto serie a la PC y los vemos en el Monitor Serie del IDE.


void setup() {
  // iniciar conexión serie
  Serial.begin(9600);

//  Si lo configuramos de esta forma se mete ruido! - no va
//  pinMode(2, INPUT);
//  pinMode(4, OUTPUT);
//  digitalWrite(4,HIGH);
  
  //configuro el pin 2 como entrada, activando las resistencias internas pull-up
  pinMode(2, INPUT_PULLUP);
  pinMode(4, OUTPUT);
  digitalWrite(4,LOW); // pongo 0V en el pin 4

  pinMode(13, OUTPUT);

}

void loop() {

  int estadoBoton = digitalRead(2);
  Serial.println(estadoBoton); // envío la lectura la PC

  if (estadoBoton == HIGH) {
    digitalWrite(13, LOW); 
  } else {
    digitalWrite(13, HIGH);
  }
}

Cambiar el estado de led con cada pulsación

Usamos la misma conexión anterior, pero cambiamos el comportamiento. Cada pulsación debe cambiar el estado del led y dejarlo en el nuevo estado.

Usamos una variable global para conocer ese estado. Y usamos bucles While para no tomar múltiples veces cada pulsación.

bool estado=LOW;

void setup() {
  pinMode(2, INPUT_PULLUP);
  pinMode(4, OUTPUT);
  digitalWrite(4,LOW);
  pinMode(13, OUTPUT);

}

void loop() {
  while(digitalRead(2)==HIGH) {
    //espero que lo presione
  }
  estado = !estado;
  digitalWrite(13,estado);
  while(digitalRead(2)==LOW) {
    // si sigue presionado, espero que lo suelte
  }
  delay(100);
}