Descrición:
Para definir un conxunto de variables podemos utilizar un array:
tipo nome[nº de variables]={valor1, …, valor n}
Podemos utilizar un array para almacenar, por exemplo, os pins nos que están conectados os LEDs. Isto resulta interesante, por exemplo, se os pins nos que están conectados os LEDs non son consecutivos.
|
1 2 3 |
int leds[4]={7,9,11,13}; // Exemplo1: 4 Leds conectados nos pins 7, 9, 11 e 13 |
|
1 2 3 |
int notas[] = {NOTE_F3,NOTE_C4,NOTE_CS4,NOTE_E3,NOTE_C4,NOTE_C3}; // Exemplo2: 6 notas musicais |
Programas:
1. Función luces
1. Función luces: Imos empregar unha función ou subrutina, que definiremos previamente. No noso caso chámase “luces”. Para definila usamos void luces() {…} Cando queiramos que se execute invocámola: luces ();
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// Declaración de variables: int leds[5]={7,9,10,12,13}; // Creamos un array de 5 pins nos que van conectados os LEDs int pulsador=2; int tempo=100; // Configuración: void setup() { for(int n=0;n<5;n++) { // Configuramos os pins como saída pinMode(leds[n],OUTPUT); } } // Programa: void luces() { //Definimos a función "luces" for (int n=0;n<5;n++) { // os LEDs van acendéndose e apagándose consecutivamente digitalWrite (leds[n],HIGH); delay (tempo); digitalWrite (leds[n],LOW); delay (tempo); } } void loop() { if (digitalRead(pulsador)==HIGH) { // Se prememos no pulsador luces (); // execútase a función "luces" } } |
2. Ruleta de leds
2. Ruleta de leds: 5 LEDs se irán acendendo e apagando consecutivamente e volta a empezar. A persoa que xoga deberá premer no pulsador cada vez que se acenda o LED do medio, de cor verde (pin 11 no noso caso). No caso de acerto móstrase “Acertaches!” na consola e soará unha melodía. No caso de fallo móstrase “Fallaches” e soará outra melodía. Para ver como facer para que soe unha melodía bótalle unha ollada á sección “Xogando co son“. Neste caso conectamos un zumbador entre o pin 4 e a masa.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
// Declaración de variables: int boton = 2; // Pulsador int altofalante = 4; int valor; // Variable para ler o pin do pulsador // Configuración void setup() { Serial.begin(9600); // conectamos o porto serie while(!Serial); for (int i=9; i<=13;i++){ // Declaramos os pins do 9 ao 13 como saída pinMode(i, OUTPUT); } pinMode(altofalante, OUTPUT); } // Programa: void melodia1(){ // Melodía para o acerto tone(4,1000,200); // 1000 Hz durante 0.2s delay(400); tone(4,1500,300); // 1500 Hz durante 0.3s delay(400); tone(4,2000,500); // 2000 Hz durante 0.5s } void melodia2(){ // Melodía para o fallo tone(4,260,500); // 260 Hz durante 0.2s delay(400); } void loop() { for (int i=9; i<=13;i++) { // Imos acendendo os LEDs un a un digitalWrite(i, HIGH); valor=digitalRead(boton); // Miramos se o pulsador está premido if ((valor==HIGH) && (i==11)){ // Se acertaches Serial.println("ACERTACHES!"); // móstrase na consola melodia1(); // e soa a melodía 1 delay(1000); // Agarda 1 segundo antes de continuar } if ((valor==HIGH) && (i!=11)){ // Se non acertaches Serial.println("FALLACHES!"); // móstrase na consola melodia2(); // e soa a melodía 2 delay(1000); } delay(200); digitalWrite(i, LOW); // apaga o led para pasar ao seguinte delay(0); } } |
Simulación:
Propostas:
- Xogo de luces con funcións: Fai un xogo de luces creando varias funcións (por exemplo, acender e apagar os leds consecutivamente, acender e apagar varias veces, etc.). Despois fai un programa que inclúa estas funcións. Por exemplo, con varios pulsadores, cando prememos un pulsador determinado execútase unha función concreta.
- Ruleta mellorada. Podes mellorar o programa da ruleta engadindo novas accións. A) Engade máis LEDs, polo menos 9. Utiliza un array para definilos. B) Introduce variables para establecer un número máximo de intentos e para facer un contador co número de acertos en cada partida. Ao finalizar o xogo soa outra melodía diferente C) Fai que a medida que acertas o intervalo de tempo entre o acendido dos diferentes LEDs sexa menor, facendo o xogo máis difícil.
- Melodía: Mellora o programa Melodía “pitches” utilizando un array para definir as notas, e a función for para evitar repetir instrucións.