donleonard
Nieuwe gebruiker
- Lid geworden
- 8 dec 2008
- Berichten
- 2
voor een kunstwerk
The dancing white man
http://vimeo.com/1991582?pg=embed&sec=1991582
ben ik bezig met het inbouwen van een sensor en een sd card reader[waveshield]
de Wave Shield kit en de Arduino board doen het goed , en een Maxbotics EZ1 http://www.maxbotix.com sensor met analog signal output , en een relay http://www.eztronics.nl/webshop/catalog/product_info.php/products_id/78 /dual relay board.
ik wil graag het volgende:
als de sensor beweging ziet:
-de tl- 's gaan aan
-de robot begint te bewegen,[relay =on].
-de waveshield[sd card speler] start het spelen van de sd cart.d
[dus het weet welk geluid het laatst gespeeld is.[ uit de meerdere geluiden op de sd card ]]
-na +- 7 seconds allese stopt.. [the relay slaat weer om en de wavecard pauseert]
dan waht +- 8 seconden start het aflezen van "if sensor" sensor.
Iik vond 3 schriptjes die ik volgens mij moet combineren
thanks to http://www.ladyada.net/make/waveshield/examples.html
the Digital audio player sketch
the sensor read sketch
and
Saving & restoring the play position
als je wilt weten waar je je in de .wave bevindt , deze info krijg je met in wave.getSize() (the number of bytes in the entire wave) en wave.remainingBytesInChunk (hhoeveel bytes zijn er over om te spelen)
je kunt de huidige locatie in de wave vinden in: wave.seek(), the Arduino start meteen . Dus, wave.seek(0) brengt je naar het begin, wave.seek(wave.getSize()/2) brengt je naar det midden van een geluid
ik hoop dat iemand me verder kan helpen
ben een o0 op het gebied van programmeren
alvast bedankt
Leonard
The dancing white man
http://vimeo.com/1991582?pg=embed&sec=1991582
ben ik bezig met het inbouwen van een sensor en een sd card reader[waveshield]
de Wave Shield kit en de Arduino board doen het goed , en een Maxbotics EZ1 http://www.maxbotix.com sensor met analog signal output , en een relay http://www.eztronics.nl/webshop/catalog/product_info.php/products_id/78 /dual relay board.
ik wil graag het volgende:
als de sensor beweging ziet:
-de tl- 's gaan aan
-de robot begint te bewegen,[relay =on].
-de waveshield[sd card speler] start het spelen van de sd cart.d
[dus het weet welk geluid het laatst gespeeld is.[ uit de meerdere geluiden op de sd card ]]
-na +- 7 seconds allese stopt.. [the relay slaat weer om en de wavecard pauseert]
dan waht +- 8 seconden start het aflezen van "if sensor" sensor.
Iik vond 3 schriptjes die ik volgens mij moet combineren
thanks to http://www.ladyada.net/make/waveshield/examples.html
the Digital audio player sketch
Code:
#include <AF_Wave.h>
#include <avr/pgmspace.h>
#include "util.h"
#include "wave.h"
AF_Wave card;
File f;
Wavefile wave; // only one!
#define redled 9
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Wave test!");
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(redled, OUTPUT);
if (!card.init_card()) {
putstring_nl("Card init. failed!"); return;
}
if (!card.open_partition()) {
putstring_nl("No partition!"); return;
}
if (!card.open_filesys()) {
putstring_nl("Couldn't open filesys"); return;
}
if (!card.open_rootdir()) {
putstring_nl("Couldn't open dir"); return;
}
putstring_nl("Files found:");
ls();
}
void ls() {
char name[13];
int ret;
card.reset_dir();
putstring_nl("Files found:");
while (1) {
ret = card.get_next_name_in_dir(name);
if (!ret) {
card.reset_dir();
return;
}
Serial.println(name);
}
}
uint8_t tracknum = 0;
void loop() {
uint8_t i, r;
char c, name[15];
card.reset_dir();
// scroll through the files in the directory
for (i=0; i<tracknum+1; i++) {
r = card.get_next_name_in_dir(name);
if (!r) {
// ran out of tracks! start over
tracknum = 0;
return;
}
}
putstring("\n\rPlaying "); Serial.print(name);
// reset the directory so we can find the file
card.reset_dir();
playcomplete(name);
tracknum++;
}
void playcomplete(char *name) {
playfile(name);
while (wave.isplaying) {
putstring(".");
delay(100);
}
card.close_file(f);
}
void playfile(char *name) {
f = card.open_file(name);
if (!f) {
putstring_nl(" Couldn't open file"); return;
}
if (!wave.create(f)) {
putstring_nl(" Not a valid WAV"); return;
}
// ok time to play!
wave.play();
}
the sensor read sketch
Code:
//Output
int statusLed = 13;
//intput
int ez1Analog = 0;
void setup() {
pinMode(statusLed,OUTPUT);statusLed
pinMode(ez1Analog,INPUT);
beginSerial(9600);
}
void loop() {
int val = analogRead(ez1Analog);
if (val > 0) {
// The Maxbotix reports 512 steps of information on AN
// but we read that as 1024. Each step is 1", so we need
// to divide by 2 to get the correct rough range in inches.
//
// this value should also be calibrated for your particular
// sensor and enclosure
val = val* 2.24;
Serial.println(val); // cm
}
blinkLed(statusLed,val);
}
void blinkLed(int pin, int ms) {
digitalWrite(pin,LOW); // turn it off it was on
digitalWrite(pin,HIGH);
delay(ms);
digitalWrite(pin,LOW);
delay(ms);
}
and
Saving & restoring the play position
als je wilt weten waar je je in de .wave bevindt , deze info krijg je met in wave.getSize() (the number of bytes in the entire wave) en wave.remainingBytesInChunk (hhoeveel bytes zijn er over om te spelen)
je kunt de huidige locatie in de wave vinden in: wave.seek(), the Arduino start meteen . Dus, wave.seek(0) brengt je naar het begin, wave.seek(wave.getSize()/2) brengt je naar det midden van een geluid
ik hoop dat iemand me verder kan helpen
ben een o0 op het gebied van programmeren
alvast bedankt
Leonard
Laatst bewerkt: