sprekende vuilnisbak
4 berichten
• Pagina 1 van 1
- hans50-dec
- Berichten: 12
- Geregistreerd: 15 Dec 2016, 19:45
sprekende vuilnisbak
Beste forumleden,
Mijn nieuwste project behelst een sprekende vuilnisbak en werkt met een PIR-sensor en een afstandssensor (HCSR04). Verder is op de Arduino een MP3 spelerkaart geprikt met SD kaart lezer.
Zodra er beweging wordt opgemerkt begint een melodie te spelen. Komt de persoon binnen een range van 60-100cm dan moet melodie 2 beginnen en melodie 1 stoppen uiteraard. Tevens wanneer de persoon binnen 60cm van de vuilnisbak komt, dan begint melodie 3 en stopt de andere weer.
Kunnen jullie je licht eens laten schijnen over de sketch???? Hieronder de code en het schema. Dank daarvoor.
Mijn nieuwste project behelst een sprekende vuilnisbak en werkt met een PIR-sensor en een afstandssensor (HCSR04). Verder is op de Arduino een MP3 spelerkaart geprikt met SD kaart lezer.
Zodra er beweging wordt opgemerkt begint een melodie te spelen. Komt de persoon binnen een range van 60-100cm dan moet melodie 2 beginnen en melodie 1 stoppen uiteraard. Tevens wanneer de persoon binnen 60cm van de vuilnisbak komt, dan begint melodie 3 en stopt de andere weer.
Kunnen jullie je licht eens laten schijnen over de sketch???? Hieronder de code en het schema. Dank daarvoor.
- Code: Alles selecteren
/*
This project triggers an MP3 when a short-range ultra-sonic
sensor is triggered and movement is detected.
Copyrights 2017 Hans Schuurmans
*/
#include <SPI.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <SFEMP3Shield.h>
SdFat sd;
SFEMP3Shield MP3player;
int PIR = 0;
int PIRpin = A0; // pir pin
int TRIG_PIN = A1; // trigger pin
int ECHO_PIN = A3; // echo pin
void setup()
{
uint8_t result; //result code from some function as to be tested at later time.
Serial.begin(115200);
delay(3000);
pinMode(PIRpin, INPUT); // pir pin
pinMode(TRIG_PIN, OUTPUT); // trigger pin
pinMode(ECHO_PIN, INPUT); // echo pin
//start the shield
//Initialize the SdCard.
if (!sd.begin(SD_SEL, SPI_HALF_SPEED)); // sd.initErrorHalt();
if (!sd.chdir("/")); // sd.errorHalt("sd.chdir");
// sd.begin(SD_SEL, SPI_HALF_SPEED);
// MP3player.begin();
//Initialize the MP3 Player Shield
result = MP3player.begin();
//check result, see readme for error codes.
if (result != 0)
{
Serial.print(F("Error code: "));
Serial.print(result);
Serial.println(F(" when trying to start MP3 player"));
if ( result == 6 )
{
Serial.println(F("Warning: patch file not found, skipping.")); // can be removed for space, if needed.
Serial.println(F("Use the \"d\" command to verify SdCard can be read")); // can be removed for space, if needed.
}
}
MP3player.setBitRate(192);
MP3player.setVolume(10, 10);
MP3player.setMonoMode(1);
}// end setup
void loop()
{
long duration, distance;
long avgDistance = 0;
/*
Currently receiving an invalid reading every fourth attempt.
This loop averages out the readings to compensate for this.
*/
for (int i = 0; i < 4; i++)
{
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(1000);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
//Convert to centimeters
distance = (duration / 2) / 29;
avgDistance += distance;
delay(50);
}
avgDistance = (avgDistance / 4);
PIR = digitalRead(PIRpin);
Serial.print("PIR= ");
Serial.println(PIR);
Serial.print(avgDistance );
Serial.println(" cm");
if ((PIR == 1) && (avgDistance > 100))
{
// Track 4 is being played below.
MP3player.stopTrack();
MP3player.playTrack(4);
Serial.print(avgDistance );
Serial.println(" cm");
Serial.println("track 4 muziek");
}
else if ((PIR == 1) && (avgDistance <= 100 && avgDistance > 60) && MP3player.isPlaying())
{
MP3player.stopTrack();
MP3player.playTrack(3);// gracias met applaus
Serial.print(avgDistance );
Serial.println(" cm");
Serial.println("track 3 gracias met applaus");
delay(2000);
return;
}
else if ((PIR == 1) && (avgDistance <= 60 && avgDistance > 20) && MP3player.isPlaying())
{
MP3player.stopTrack();
MP3player.playTrack(2);//gracias
Serial.print(avgDistance );
Serial.println(" cm");
Serial.println("track 2 gracias");
delay(2000);
return;
}
}//end void loop
- Bijlagen
-
- Avfalbak.jpg (81.67 KiB) 5607 keer bekeken
Advertisement
Re: sprekende vuilnisbak
hans50-dec schreef:Kunnen jullie je licht eens laten schijnen over de sketch????
Wat voor licht ?
In plaats van licht heb ik een paar kleine brokjes om op te knabbelen.
De PIR sensor heeft een pulldown weerstand van 10k. Ik ken wel PIR sensor met een open-collector uitgang, waar een pullup weerstand nodig is. Maar een pulldown heb ik nog niet gezien.
Een pin nummer mag een 'const' zijn.
Probeer niet om iets "slim" op te schrijven. Schrijf de code helder en duidelijk.
- Code: Alles selecteren
// Dit is goed, normaal if-statement
if (!sd.begin(SD_SEL, SPI_HALF_SPEED))
sd.initErrorHalt();
// Dit is goed, normale code
sd.begin(SD_SEL, SPI_HALF_SPEED);
De variabele 'PIR' is een integer en daarin komt het resultaat van 'digitalRead'. Dat kan alleen maar HIGH of LOW zijn. Je vergelijkt het met '1', maar het is beter om het met 'HIGH' te vergelijken.
Er zitten twee 'delay(2000)' in. In die tijd kan een PIR sensor aktief worden. Tijdens die delay kun je niets doen. Het is me niet duidelijk waar die delay voor is.
Er zitten twee 'return' in de loop(). Dat lijkt me nergens voor nodig. Dat is blijkbaar gekopieerd van iets anders.
Hoe vaak naar de sensoren wordt gekeken, dat hangt van de code af. Je bepaalt dus niet zelf hoe vaak dat is. Dat geeft niet, maar het zou handig zijn als een indicatie had hoe vaak per seconde de loop() wordt uitgevoerd.
Blijkbaar is de code niet goed, en wordt de Ultrasonic sensor vier keer uitgevoerd. Dat lijkt me niet correct. Misschien kun je het werkend krijgen en gewoon één keer dat doen. Wiskundig gezien klopt het niet om een verkeerde meting weg te werken door het gemiddelde te nemen. Er is een New Ping library: https://bitbucket.org/teckel12/arduino-new-ping/wiki/Home
Re: sprekende vuilnisbak
Ha Hans,
Is het gelukt?
Benieuwd naar de oplossing.
zoek een zelfde soort oplossing.
Hoor het graag.
Is het gelukt?
Benieuwd naar de oplossing.
zoek een zelfde soort oplossing.
Hoor het graag.
Re: sprekende vuilnisbak
Ha Hans,
Ik heb een zelfde situatie, ben jij tot een oplossing gekomen?
Ik hoor graag van je.
Ik heb een zelfde situatie, ben jij tot een oplossing gekomen?
Ik hoor graag van je.
4 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 16 gasten