venerdì 26 dicembre 2014

Stella in cartongesso gestita da Smartphone

Ho creato una stella in cartongesso al posto del vecchio lampadario in soggiorno.


Poi ho montato dei faretti e con Arduino, un modulo bluetooth, un modulo relè e infine un app creata da me (per android) ho creato un comando remoto per accendere e spegnere ogni singolo faretto comodamente dal divano o qualsiasi altro posto purchè nel raggio del modulo bluetooth.
Potete avere l'app gratuitamente contattandomi e ve la manderò in qualche modo.

Collegamenti:

Modulo bluetooth hc-06 all'arduino connettendo RX al TX e il TX all'RX.
Modulo relè alle uscite di arduino 4, 5, 6, 7, 8.

Codice Arduino: Version 1.0 (stabile e testata)


#include <SoftwareSerial.h>
#include <EEPROM.h>

SoftwareSerial mySerial(2,3); //RX, TX
char val;

int luce1 = 4;
int luce2 = 5;
int luce3 = 6;
int luce4 = 7;
int luce5 = 8;
int Step;

boolean s1 = false;
boolean s2 = false;
boolean s3 = false;
boolean s4 = false;
boolean s5 = false;

byte datoeeprom1;
byte datoeeprom2;
byte datoeeprom3;
byte datoeeprom4;
byte datoeeprom5;

boolean passo = false;

long unsigned int time = millis();
int intervallo = 200; //valore base = 150, aumentare se si è lenti a passare da un tasto all'altro del telecomando
  
void setup() {
  Serial.begin(9600);      // Inizializza la comunicazione seriale a 9600bps
  mySerial.begin(9600);
  
  pinMode(luce1, OUTPUT);
  pinMode(luce2, OUTPUT);
  pinMode(luce3, OUTPUT);
  pinMode(luce4, OUTPUT);
  pinMode(luce5, OUTPUT);
  
  
  Serial.println("output fatto");
  
  
  //carico valore memoria e accendo/spengo vari relè
  datoeeprom1 = EEPROM.read(1); 
  datoeeprom2 = EEPROM.read(2); 
  datoeeprom3 = EEPROM.read(3); 
  datoeeprom4 = EEPROM.read(4); 
  datoeeprom5 = EEPROM.read(5); 

  Serial.println("leggo dati dalla eproom");
  Serial.println(datoeeprom1);
  Serial.println("1 fatto, ora il secondo:");
 Serial.println(datoeeprom2);

  if (datoeeprom1 == 1)
  {
    digitalWrite(luce1, HIGH);
  }else{
    digitalWrite(luce1, LOW);
  }
  
  if (datoeeprom2 == 1)
  {
    digitalWrite(luce2, HIGH);
  }else{
    digitalWrite(luce2, LOW);
  }
  
  if (datoeeprom3 == 1)
  {
    digitalWrite(luce3, HIGH);
  }else{
    digitalWrite(luce3, LOW);
  }
  
  if (datoeeprom4 == 1)
  {
    digitalWrite(luce4, HIGH);
  }else{
    digitalWrite(luce4, LOW);
  }
  
  if (datoeeprom5 == 1)
  {
    digitalWrite(luce5, HIGH);
  }else{
    digitalWrite(luce5, LOW);
  }


}
void loop() {
  riceviValori();
  
  if (val == '1')
  {
    if (s1 == true){
      digitalWrite(luce1, LOW);
      Serial.println("funzia");
      EEPROM.write(1, 0);
      s1 = false;
    }
    else{
      digitalWrite(luce1, HIGH);
      EEPROM.write(1, 1);
      s1 = true;
    }
  }
  
  if( val == '2' )
  {
    if (s2 == true){
      digitalWrite(luce2, LOW);
      EEPROM.write(2, 0);
      s2 = false;
    }
    else{
      digitalWrite(luce2, HIGH);
      EEPROM.write(2, 1);
    s2 = true;
    }
  }
  
  if( val == '3' )
  {
    if (s3 == true){
      digitalWrite(luce3, LOW);
      EEPROM.write(3, 0);
      s3 = false;
    }
    else{
      digitalWrite(luce3, HIGH);
      EEPROM.write(3, 1);
      s3 = true;
    }
  }
  
  if( val == '4' )
  {
    if (s4 == true){
      digitalWrite(luce4, LOW);
      EEPROM.write(4, 0);
      s4 = false;
    }
    else{
      digitalWrite(luce4, HIGH);
      EEPROM.write(4, 1);
      s4 = true;
    }
  }
  
  if( val == '5' )
  {
    if (s5 == true){
      digitalWrite(luce5, LOW);
      EEPROM.write(5, 0);
      s5 = false;
    }
    else{
      digitalWrite(luce5, HIGH);
      EEPROM.write(5, 1);
      s5 = true;
    }
  }
  
  if( val == 'P' ) //PULSANTE PIù
  {
    intervallo = intervallo + 100;
  }
  
  if( val == 'M' ) //PULSANTE MENO
  {
    intervallo = intervallo - 100;
  }
  
  if( val == 'S' ) //PULSANTE SEQUENZA
  {
    if (passo == true)
    {
      passo = false;
    }
    else{
      passo = true;
      digitalWrite(luce1, LOW);
      digitalWrite(luce2, LOW);
      digitalWrite(luce3, LOW);
      digitalWrite(luce4, LOW);
      digitalWrite(luce5, LOW);
      funzioneStep();
    }
  }
  delay(100); // attende 100ms per la prossima lettura
}

void riceviValori(){
  val = mySerial.read();   // legge il valore e lo salva nella variabile 'val'
  
}

void funzioneStep(){
  switch (Step)
  {
   /* case 1:
      if (bottonepremuto!=0)
      {

      }  
      break;
    case 2:*/
  }
}

Nessun commento:

Posta un commento