Jan Walraven
DevOps



Menu
Categories:
Posted on

In this project we created an Christmas tree with infrared detection. When someone passes by, the sensors detects movement and the Christmas tree begins to blink and plays Christmas songs.

Needed

Code


#include "kerstDetectie.h"
#include 
#include 
#include "util.h"
#include "wave.h"
 
AF_Wave card;
File f;
Wavefile wave;      // only one!
 
#define redled 9
 
uint16_t samplerate;
 
int inPin = 6;   // pushbutton connected to digital pin 7
int val = 0;     // variable to store the read value
int relay1Pin =7;//relay pin 1 to 7
int relay2Pin =8;// relay pin to 8
int ledPin = 11; // LED connected to digital pin 13
 
 
 
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);
  }
}
 
 
boolean playfile(char *name) {
   f = card.open_file(name);
   if (!f) {
      putstring_nl(" Couldn’t open file"); return false;
   }
   if (!wave.create(f)) {
     putstring_nl(" Not a valid WAV"); return false;
   }
   // ok time to play!
   wave.play();
   return true;
}
void playcomplete(char *name) {
  uint16_t potval;
  uint32_t newsamplerate;
 
  playfile(name);
  samplerate = wave.dwSamplesPerSec;
  while (wave.isplaying) {
        // you can do stuff here!
         //digitalWrite(ledPin,HIGH);
         digitalWrite(relay1Pin,HIGH);
         digitalWrite(relay2Pin,LOW);
         delay(50);
         //digitalWrite(ledPin,LOW);
         digitalWrite(relay2Pin,HIGH);
         digitalWrite(relay1Pin,LOW);
        delay(50);
 
   }
  digitalWrite(relay1Pin,HIGH);
  digitalWrite(relay2Pin,HIGH);
 
  putstring_nl("klaar met spelen");
  card.close_file(f);
}
 
//————————–
 
 
void setup()
{
  pinMode(ledPin, OUTPUT);
  pinMode(relay1Pin,OUTPUT);
  pinMode(relay2Pin,OUTPUT);
  pinMode(inPin, INPUT);
 
  pinMode(2, OUTPUT);
   pinMode(3, OUTPUT);
   pinMode(4, OUTPUT);
   pinMode(5, OUTPUT);
   pinMode(redled, OUTPUT);
 
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Wave test!");
 
 
  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();
 
  playcomplete("SHIP.WAV");
 
 
  digitalWrite(relay1Pin,HIGH);
  delay(500);
  digitalWrite(relay2Pin,HIGH);
  delay(1000);
  digitalWrite(relay1Pin,LOW);
  digitalWrite(relay2Pin,LOW);
  delay(500);
  digitalWrite(relay1Pin,HIGH);
  digitalWrite(relay2Pin,HIGH);
}
//————————-
 
uint8_t tracknum = 0;
 
 
void playSound(){
   uint8_t i, r;
   char c, name[15];
   String fileName;
 
   card.reset_dir();
   // scroll through the files in the directory
   for (i=0; i