diff options
author | Jakob Stendahl <jakob@Jakobs-MacBook-Pro.local> | 2016-10-21 07:57:13 +0200 |
---|---|---|
committer | Jakob Stendahl <jakob@Jakobs-MacBook-Pro.local> | 2016-10-21 07:57:13 +0200 |
commit | 3c6a622c71c8f092e3de3f9a2fbbbfcca67cf720 (patch) | |
tree | 98c824fd583530da53e4eb2c697a4db1f01c7045 /Arduino/i2cPixelSlave.ino | |
parent | 6dafff0b4844f50df78bc23cb5aa26ba339cc3b0 (diff) | |
download | i2c-Neopixel-3c6a622c71c8f092e3de3f9a2fbbbfcca67cf720.tar.gz i2c-Neopixel-3c6a622c71c8f092e3de3f9a2fbbbfcca67cf720.zip |
Make Arduino Project. update scripts
Diffstat (limited to 'Arduino/i2cPixelSlave.ino')
-rw-r--r-- | Arduino/i2cPixelSlave.ino | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/Arduino/i2cPixelSlave.ino b/Arduino/i2cPixelSlave.ino deleted file mode 100644 index fa5bf45..0000000 --- a/Arduino/i2cPixelSlave.ino +++ /dev/null @@ -1,275 +0,0 @@ -#include <Wire.h> -#include <Adafruit_NeoPixel.h> - -#define PIN 6 -#define PIXELS 10 // Set this to the number of pixels in yout strip -#define SLAVE_ADDRESS 0x04 - -// Parameter 1 = number of pixels in strip -// Parameter 2 = pin number (most are valid) -// Parameter 3 = pixel type flags, add together as needed: -// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) -// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) -// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) -// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) -Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXELS, PIN, NEO_GRB + NEO_KHZ800); - -// i2c Config -int number = 0; -int state = 0; - -// PIR Config -long calibrationTime = 60000; // How long the sensors need to calibrate -long unsigned int lowIn; -long unsigned int pause = 5000; // How long time before we assume no motion - - // Sensor 1 -int pir1 = 7; // choose the input pin (for First sensor) -int pir1State = LOW; // we start, assuming no motion detected -int val1 = 0; // variable for reading the pin status -boolean lockLow1 = true; -boolean takeLowTime1; - - // Sensor 2 -int pir2 = 8; // choose the input pin (for Second sensor) -int pir2State = LOW; // we start, assuming no motion detected -int val2 = 0; // variable for reading the pin status -boolean lockLow2 = true; -boolean takeLowTime2; - -void setup() { - - // Set pins - pinMode(13, OUTPUT); - pinMode(pir1, INPUT); - pinMode(pir2, INPUT); - - // Open Serial port (not really neccesary) - Serial.begin(9600); - - // Initiate Neopixels - strip.begin(); - strip.show(); // Initialize all pixels to 'off' - - // Set all pixels to white - for (int i = 0; i <= PIXELS; i++) { - strip.setPixelColor(i, 255, 255, 255); - } - strip.show(); - - //give the sensor some time to calibrate. Animate with neopixels - Serial.print("calibrating sensor "); - - long delayTime = calibrationTime/PIXELS; - - for(int i = 0; i < PIXELS; i++){ - strip.setPixelColor(PIXELS-i, 0, 0, 0); - strip.show(); - - Serial.print("."); - delay(delayTime); - } - - strip.setPixelColor(0, 0, 0, 0); - strip.show(); - - Serial.println(" done"); - Serial.println("SENSOR ACTIVE"); - delay(50); - - // Open i2c connection - Wire.begin(SLAVE_ADDRESS); - - Wire.onReceive(receiveData); - Wire.onRequest(sendData); - - // Done booting! - Serial.println("Ready!"); - - // Flash once Red - flashColor(204, 0, 0, 1100); - -} - -void loop() { - - // Sensor 1 // - if(digitalRead(pir1) == HIGH){ - digitalWrite(13, HIGH); //the led visualizes the sensors output pin state - number = 2; - sendData(); - if(lockLow1){ - //makes sure we wait for a transition to LOW before any further output is made: - lockLow1 = false; - Serial.println("---"); - Serial.print("motion detected at "); - Serial.print(millis()/1000); - Serial.println(" sec"); - delay(50); - } - takeLowTime1 = true; - } - - if(digitalRead(pir1) == LOW){ - digitalWrite(13, LOW); //the led visualizes the sensors output pin state - number = 0; - if(takeLowTime1){ - lowIn = millis(); //save the time of the transition from high to LOW - takeLowTime1 = false; //make sure this is only done at the start of a LOW phase - } - //if the sensor is low for more than the given pause, - //we assume that no more motion is going to happen - if(!lockLow1 && millis() - lowIn > pause){ - //makes sure this block of code is only executed again after - //a new motion sequence has been detected - lockLow1 = true; - Serial.print("motion ended at "); //output - Serial.print((millis() - pause)/1000); - Serial.println(" sec"); - delay(50); - } - } - // ./Sensor 1 // - - - - // Sensor 2 // - if(digitalRead(pir2) == HIGH){ - digitalWrite(13, HIGH); //the led visualizes the sensors output pin state - number = 3; - sendData(); - if(lockLow2){ - //makes sure we wait for a transition to LOW before any further output is made: - lockLow2 = false; - Serial.println("---"); - Serial.print("motion detected at "); - Serial.print(millis()/1000); - Serial.println(" sec"); - delay(50); - } - takeLowTime2 = true; - } - - if(digitalRead(pir2) == LOW){ - digitalWrite(13, LOW); //the led visualizes the sensors output pin state - number = 0; - if(takeLowTime2){ - lowIn = millis(); //save the time of the transition from high to LOW - takeLowTime2 = false; //make sure this is only done at the start of a LOW phase - } - //if the sensor is low for more than the given pause, - //we assume that no more motion is going to happen - if(!lockLow2 && millis() - lowIn > pause){ - //makes sure this block of code is only executed again after - //a new motion sequence has been detected - lockLow2 = true; - Serial.print("motion ended at "); //output - Serial.print((millis() - pause)/1000); - Serial.println(" sec"); - delay(50); - } - } - // ./Sensor 2 // -} - -void receiveData(int byteCount) { - digitalWrite(13, HIGH); - int bytes[byteCount]; - int i = 0; - - while (Wire.available()) { - number = Wire.read(); - bytes[i] = number; - - Serial.println(number); - i++; - } - - switch (bytes[0]) { - - case 0x01: - Serial.println("Life is discovered"); - number = 1; - flashColor(0, 204, 0, 1100); - break; - - case 0x02: - strip.setPixelColor(bytes[2], bytes[3], bytes[4], bytes[5]); - break; - - case 0x03: - strip.show(); - break; - - case 0x04: - flashColor(bytes[2], bytes[3], bytes[4], bytes[5]); - break; - - default: - Serial.println("Nothing New"); - break; - - } - - digitalWrite(13, LOW); -} - -void sendData() { - Wire.write(number); -} - -void sendString(int Data) { - Wire.write(Data); -} - -void testCoid() { - flashColor(0, 204, 0, 1100); -} - -void flashColor(byte Red, byte Green, byte Blue, long n) { - - byte Rstart=0; - byte Gstart=0; - byte Bstart=0; - byte Rend=Red; - byte Gend=Green; - byte Bend=Blue; - - for(long i = 0; i < n; i++) // larger values of 'n' will give a smoother/slower transition. - { - byte Rnew = Rstart + (Rend - Rstart) * i / n; - byte Gnew = Gstart + (Gend - Gstart) * i / n; - byte Bnew = Bstart + (Bend - Bstart) * i / n; - // set pixel color here - for(int j=0; j < PIXELS; j++) { - strip.setPixelColor(j, strip.Color(Rnew, Gnew, Bnew)); - } - strip.show(); - } - - Rstart=Red; - Gstart=Green; - Bstart=Blue; - Rend=0; - Gend=0; - Bend=0; - - for(long i = 0; i < n; i++) // larger values of 'n' will give a smoother/slower transition. - { - byte Rnew = Rstart + (Rend - Rstart) * i / n; - byte Gnew = Gstart + (Gend - Gstart) * i / n; - byte Bnew = Bstart + (Bend - Bstart) * i / n; - // set pixel color here - for(int j=0; j < PIXELS; j++) { - strip.setPixelColor(j, strip.Color(Rnew, Gnew, Bnew)); - } - strip.show(); - } - - for(int i = 0; i < PIXELS; i++) { - strip.setPixelColor(i, 0, 0, 0); - } - strip.show(); - -} - |