Stap 3: codering
#include < NewPing.h >
#include < SoftwareServo.h >
#include < FatReader.h >
#include < SdReader.h >
#include < avr/pgmspace.h >
#include "WaveUtil.h"
#include "WaveHC.h"#define TRIGGER_PIN 7
#define ECHO_PIN 6
#define MAX_DISTANCE 500Kaart van de SdReader;
FatVolume vol;
FatReader wortel;
F FatReader;WaveHC Golf;
NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
SoftwareServo servo1;unsigned int pingSpeed = 50;
unsigned long pingTimer;byte knoppen [] = {A0, A1, A2, A3, A4, A5};
#define NUMBUTTONS sizeof(buttons)
int freeRam(void)
{
extern int __bss_end;
extern int * __brkval;
int free_memory;
Als (__brkval (int) == 0) {}
FREE_MEMORY = ((int) & free_memory)-((int) & __bss_end);
}
else {}
FREE_MEMORY = ((int) & free_memory)-((int) __brkval);
}
Return free_memory;
}VOID sdErrorCheck(void)
{
Als (! card.errorCode()) keren;
putstring ("\n\rSD I/O fout:");
Serial.Print(Card.ErrorCode(), HEX);
putstring (",");
Serial.println(Card.errorData(), HEX);
while(1);
}VOID Setup {}
Serial.begin(115200);servo1.attach(9);
Als (! card.init(true)) {}
Als (! card.init()) {}
putstring_nl ("Card init. mislukt!");
sdErrorCheck();
while(1);
card.partialBlockRead(true);uint8_t deel;
voor (deel = 0; deel < 5; deel ++) {}
Als (vol.init (kaart, deel))
breken;
}
Als (deel == 5) {}
sdErrorCheck();
while(1);
}putstring ("Using partitie");
Serial.Print (deel, DEC);
putstring (", type is vet");
Serial.println(vol.fatType(),DEC);
Als (! root.openRoot(vol)) {}
putstring_nl ("kan niet openen root dir!");
while(1);
}
}
}
}
void loop {}
delay(100);
unsigned int ons = sonar.ping();
Serial.Print ("Ping:");
Serial.Print(US / US_ROUNDTRIP_CM);
Serial.println("cm");
Als ((uS / US_ROUNDTRIP_CM) < 50) {}
servo1.write(160);
SoftwareServo::refresh();
myservo1.write(90);
}
else {}
servo1.write(0);
SoftwareServo::refresh();
myservo1.write(0);
}
byte i;
statische byte spelen = -1;
int sensor0 = analogRead (knoppen [0]);
int sensor1 = analogRead (knopen [1]);
int sensor2 = analogRead (knoppen [2]);
int sensor3 = analogRead (knoppen [3]);
int sensor4 = analogRead (knoppen [4]);
int sensor5 = analogRead (knoppen [5]);
Als (analogRead (knoppen [0]) > 900) {}
Als (spelen! = 0) {}
spelen = 0;
playfile("0.wav");
}
}
Serial.Print ("LDR A1 =");
Serial.Print(sensor1);
Als (analogRead (knopen [1]) > 900) {}
Als (spelen! = 0) {}
spelen = 0;
playfile("1.wav");
}
}
Serial.Print ("LDR A2 =");
Serial.Print(sensor2);
Als (analogRead (knoppen [2]) > 900) {}
Als (spelen! = 0) {}
spelen = 0;
playfile("2.wav");
}
}
Serial.Print ("LDR A3 =");
Serial.Print(sensor3);
Als (analogRead (knoppen [3]) > 150) {}
Als (spelen! = 0) {}
spelen = 0;
playfile("3.wav");
}
}
Serial.Print ("LDR A4 =");
Serial.Print(sensor4);
Als (analogRead (knoppen [4]) > 150) {}
Als (spelen! = 0) {}
spelen = 0;
playfile("4.wav");
}
}
Serial.Print ("LDR A5 =");
Serial.println(sensor5);
Als (analogRead (knoppen [5]) > 150) {}
Als (spelen! = 0) {}
spelen = 0;
playfile("5.wav");
}
}
Als (! wave.isplaying) {}
spelen = -1;
}
}
ongeldig playcomplete(char *name) {}
playfile(name);
terwijl (wave.isplaying) {}
}
}
ongeldig playfile(char *name) {}
Als (wave.isplaying) {}
Wave.stop();
}
Als (! f.open (root, naam)) {}
putstring kon niet ("open bestand"); Serial.Print(name); terugkeer;
}
Als (! wave.create(f)) {}
putstring_nl ("niet een geldig WAV"); terugkeer;
}
Wave.Play();
}
U moet Softwareservo bibliotheek in je arduino installeren omdat waveshield en Servo de dezelfde Timer in arduino gebruikt... maar wanneer u de Softwareservo bibliotheek gebruiken het allemaal werkt goed.
Gelukkig gebouw