Paso 5: código
El siguiente paso es agregar el código para el microcontrolador de Arduino.
Si no tienes el software de Arduino o IDE lo puedes descargar en Arduino.cc
Conectar tu Arduino al ordenador y crear un nuevo proyecto en el IDE de Arduino.
Pegar el siguiente código y sube a Arduino.
Timbre de ovejas / de mayo de 2011 por Todd Miller basada en código de ejemplo de Adafruit / / reproduce un sonido cuando se activa el sensor, en este caso ovejas baaing 7 usa
sonido y escoge uno al azar / / piezas incluyen Arduino Uno, escudo de WAV, altavoz de 8 ohm pequeño y agudo
GP2Y0A02 sensor de distancia / / para ser montado dentro de la oveja Shaun Wallace & Gromet
#include < AF_Wave.h > #include < avr/pgmspace.h > #include "util.h" #include "wave.h" AF_Wave tarjeta;
Archivo f; Wavefile onda; ¡ sólo uno! uint8_t tracknum = 0; samplerate uint16_t;
#define sensorIn 0 int songCount = 7; int a [5]; int resultado;
int i = 0; int maxDist = 0; int sensorRead = 0; int p = 0; previousMillis largo = 0; largo intervalo de tiempo = 3000;
void setup() {Serial.begin(9600); randomSeed(analogRead(1)); Serial.println ("onda prueba!"); pinMode (2, salida); pinMode (3, salida); pinMode (4, salida); pinMode (5, salida); pinMode (sensorIn, entrada); Si (! {card.init_card())}
Biblioteca Serial a 9600 bps
putstring_nl ("tarjeta init. no se pudo!"); retorno;
} Si (! {card.open_partition())}
putstring_nl ("ninguna partición!"); retorno;
} Si (! {card.open_filesys())}
putstring_nl ("no podía abrir filesys"); retorno;
} Si (! {card.open_rootdir())}
putstring_nl ("no podía abrir dir"); retorno;
} putstring_nl ("archivos encontrados:"); LS();
para (i = 0; i < 5; i ++) {/ / obtener la distancia máxima para la comparación más tarde / / maxDist += analogRead(5);
[i] += analogRead(sensorIn); } insertionSort(a,5); LS();
}
void loop() {readSensor(); uint8_t i, r; c char nombre [15]; unsigned currentMillis largo = millis();
Si (sensorRead > (maxDist + 20) & & (currentMillis - previousMillis > intervalo)) {previousMillis = currentMillis; Serial.println(maxDist-25); int songNumber = random(songCount);
Serial.Print ("juego track #"); Serial.Print(songNumber); Serial.Print(""); Serial.println(Name); Switch(songNumber)
{caso 0: playcomplete («BAA1. WAV"); rotura; caso 1: playcomplete ("BAA2. WAV"); rotura; caso 2: playcomplete ("BAA3. WAV"); rotura; caso 3: playcomplete ("BAA4. WAV"); rotura;
caso 4: playcomplete ("BAA5. WAV");
}
}
rotura; caso 5:
playcomplete ("BAA6. WAV"); rotura;
caso 6: playcomplete ("BAA7. WAV"); rotura;
} sensorRead = 0;
} card.reset_dir();
void playcomplete(char *name) {uint16_t potval; newsamplerate de uint32_t; playfile(name);
sampleRate = wave.dwSamplesPerSec; mientras (wave.isplaying) {}
Usted puede hacer cosas aquí! Delay(50);
} card.close_file(f);
void playfile(char *name) {f = card.open_file(name); if (! f) {}
putstring_nl ("no puede abrir archivo"); retorno;
} Si (! {wave.create(f))}
putstring_nl ("no un válido WAV"); retorno;
} / / ok el tiempo para jugar! Wave.Play();
} void readSensor() {}
para (int i = 0; i < 5; i ++) {a[i]=analogRead(sensorIn);
}
insertionSort(a,5); Serial.Print ("max dis ="); Serial.println(maxDist); Serial.Print ("---valor del sensor final =");
}
Serial.Print(sensorRead); Serial.println("---");
void insertionSort (int arr [], int longitud) {int i, int j, int tmp;
para (i = 1; i < longitud; i ++) {j = i;
mientras (j > 0 & & arr [j - 1] > arr[j]) {tmp = arr [j];
}
}
ARR [j] = arr [j - 1]; ARR [j - 1] = tmp;
j--;
} / / array ordenados, ahora pierden valores bajos y altos para mejor promedio [0] = 0; [4] = 0; para (i = 0; i < 5; i ++) {resultados = resultados + [i];} resultado / = 3; divida por 3 lugares 1 y 5 = 0 si (fr == 0) {maxDist = resultados; fr = 1;} else sensorRead = resultado; resultado = 0; }
void ls() {char nombre [13]; int ret; card.reset_dir(); putstring_nl ("archivos encontrados:"); mientras que {} (1)
RET = card.get_next_name_in_dir(name); Si (! ret) {}
Card.reset_dir(); retorno;
} Serial.println(name);
}