quinta-feira, 7 de junho de 2012

"No light Home" - Oitava fase - Etapa final


Nona semana(28/05-01/06): Aprimoramento final da maquete e do código.







Código :


int s0,s1,s2;
int L0=0, L1=0,L2=0, L3=0,L4=0,L5 =0,L6 = 0;
int ledPin = 1,ledPin1 = 13,ledPin2 = 12;
int ctl_1 = 0,ctl_2 = 0;
int A=0;
int calibL4 = 400, calibL5=200,calibL6=300;//valores de base para sensores da porta
int calibD0=1000,calibD1=800, calibD2=800,calibD3=600;//valores de base para disparo de sensores da parede
void setup()
 
{
 
  //4051 digital control pins
 
  pinMode(8, OUTPUT);    // s0
 
  pinMode(9, OUTPUT);    // s1
 
  pinMode(10, OUTPUT);    // s2
 
 
  Serial.begin(9600);
 
}
int binario(int n, int b){
    int r[3],a[3];
    int m10=1;
    int z=0;
    
    int q=n,c=2;
    for(int i=0;i<3;i++) r[i] = 0;
    
    do{
             r[c] = q%2;
             q = q /2;
             z = (r[c]*m10)+z;
             m10 = m10 * 10;
             c = c - 1;
        }while(q!= 0);


    return (r[b]);    
          
    }
    
void comodo(float LDR0,float LDR1,float LDR2,float LDR3,float LDR4, float LDR6) {    
    int media, desvio0, desvio1, desvio2, desvio3,desvio4;
    
    media = (LDR0 + LDR1 + LDR2 + LDR3)/4;
    
    
    Serial.print("   "); 
    Serial.print(" media: "); 
    Serial.print(media); 
    
    desvio0 = (LDR0/media)*1000;
    desvio1 = (LDR1/media)*1000;
    desvio2 = (LDR2/media)*1000;
    desvio3 = (LDR3/media)*1000;
    desvio4 = (LDR4/media)*1000;
    
    Serial.print("  "); 
    Serial.print(" D0: "); 
    Serial.print(desvio0); 
    Serial.print(" D1: "); 
    Serial.print(desvio1); 
    Serial.print(" D2: "); 
    Serial.print(desvio2); 
    Serial.print(" D3: "); 
    Serial.print(desvio3); 
    
    
         if ((desvio0 < calibD0) ) { 
    
            digitalWrite(ledPin, HIGH); 
            tone(5,261.626);
    
        }else if ((desvio1 < calibD1) ) { 
    
            digitalWrite(ledPin, HIGH); 
            tone(5,329.628);
    
        } 
         else if ((desvio2 < calibD2) ) { 
    
            digitalWrite(ledPin, HIGH); 
            tone(5,391.995);
    
        } 
            else if ((desvio3 < calibD3)) { 
    
            digitalWrite(ledPin, HIGH); 
            tone(5,440);
    
        }else if(LDR6<calibL6){
          tone(5,220);
          tone(5,440); 
        }
            else {
          digitalWrite(ledPin, LOW);
          tone(5,LOW);
        }
        
      
    
}   

int luz(int a){
    
    int n1,n2,c1,c2;
    ////////////////////
    
    if (a==0){


     n1 =  analogRead(A4); //le L5  
             

             if(n1<calibL5){
                        c1= 1;
                        
                        }
             if(c1==1){
                
                          
  n2 =  analogRead(A5);//le L6

                          if(n2<calibL6){
                                     c2 =1;
                                     }else c2 = 0;
                          if (c2 == 1){
                                       
      digitalWrite(ledPin1, HIGH); //ascende a luz  
                             digitalWrite(ledPin, HIGH); //ascende a luz
                                      c2=0;
                                      c1 = 0;
                                      a=1;
                                      }  
                          
                          }
    }
             

/////////////
    if(a==1){
     n2 =  analogRead(A5);//le L6

             if(n2<calibL6){
                        
                        c2= 1;          
                        }
             if(c2==1){
                          //c2=0;

  n1 =  analogRead(A4); //le L5
  

                          if(n1<calibL5){
                                     c1 =1;                             
                                     }else c1=0;
                          if (c1 == 1){
                                      digitalWrite(ledPin1, LOW);//desliga a luz
      digitalWrite(ledPin, LOW);//desliga a luz
                                      c1=0;
                                      c2=0;
                                      a=0;
                                      }  
                          
                          }
    }
/////////
    return a;
    
    
    
}

    
void loop()
   
{
 
 
  digitalWrite(8, LOW);
 
  digitalWrite(9, LOW);
 
  digitalWrite(10, LOW);
  
  int readInZero = analogRead(0);  // read the input pin
 
  //Serial.print(readInZero); //use the result
 
   for(int j=0; j<=7;j++){
     
     s0 = binario(j,0);
     s1 = binario(j,1);
     s2 = binario(j,2);
     
     digitalWrite(8, s0);//s0
 
     digitalWrite(9, s1);//s1
 
     digitalWrite(10, s2);//s2
     
     
     
     int readInTwo= analogRead(0);
     
     switch(j){
      case 0: 
        L0 = readInTwo;
        break;
      case 4: 
        L1 = readInTwo;
        break;
      case 2: 
        L2 = readInTwo;
        break;
      case 6: 
        L3 = readInTwo;
        break;
      default:
        break;
        
        
      }
      
    L4 = analogRead(A3);
    L5 =  analogRead(A4);//n1
    L6 =  analogRead(A5);//n2

    if(L4<calibL4){
      A = luz(A);
       
    }
    
    comodo(L0,L1,L2,L3,L4,L6);//controla sinais sonoros no comodo
    
    Serial.print("\n  L0 ");
    Serial.print(L0);
    Serial.print("  L1 ");
    Serial.print(L1);
    Serial.print("  L2 ");
    Serial.print(L2);
    Serial.print("  L3 ");
    Serial.print(L3);
    Serial.print("  L4 ");
    Serial.print(L4);
    Serial.print("  L5 ");
    Serial.print(L5);
    Serial.print("  L6 ");
    Serial.print(L6);
    
    
     
   }
 

 
}
//luz
//som



Décima semana(04/06-08/06): Testes.



Nenhum comentário:

Postar um comentário