segunda-feira, 4 de junho de 2012

"No light Home" - Quinta fase - Etapa intermediária


Etapa intermediária

Terceira semana(16/04-20/04): Pausa para a revisão e a P1 de Física.



Quarta semana(24/04-27/04): Etapa final para o desenvolvimento da maquete e do protoboard.

Quinta semana(30/04-04/05): Desenvolvimento inicial do código.

Sexta semana(07/05-11/05): Desenvolvimento intermediário do código, dúvidas sobre o projeto(em sala) e ajustes.



int s0,s1,s2;
int L0=0, L1=0,L2=0, L3=0,L4=0,L5 =0,L6 = 0;
int ledPin = 12,ledPin1 = 13;
int ctl_1 = 0,ctl_2 = 0;
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 LDR5) {    
    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); 
    
    int luz = 100;
     
    if(media > luz ) //LUZ
      {  
         if ((desvio0 < 900) ) { 
    
            digitalWrite(ledPin, HIGH); 
            tone(9,261.626);
    
        }else if ((desvio1 < 700) ) { 
    
            digitalWrite(ledPin, HIGH); 
            tone(9,329.628);
    
        } 
         else if ((desvio2 < 900) ) { 
    
            digitalWrite(ledPin, HIGH); 
            tone(9,391.995);
    
        } 
            else if ((desvio3 < 600)) { 
    
            digitalWrite(ledPin, HIGH); 
            tone(9,440);
    
        } 
            else {
          digitalWrite(ledPin, LOW);
          tone(9,LOW);
        }
     
      
        
      }
    else
    {
        if ((desvio0 < 900) ||(desvio2 < 700) ||(desvio1 < 900) ||(desvio3 < 600)) { 
    
            digitalWrite(ledPin, HIGH); 
    
        } 
            else {
          digitalWrite(ledPin, LOW);
        }
         
    }
      
    
}   

void luz(int ldr1,int ldr2){ 
  
  if(ldr1<200) ctl_1 = (ctl_1+1)%2;
  if(ctl_1==0) ctl_2=0;
  if(ctl_1==1 &&ldr2<200){
    ctl_2 = 1;
    }
  
  if( ctl_2 ==1) {
    digitalWrite(ledPin1, HIGH);
    delay(100);
  }
  else digitalWrite(ledPin1, LOW);
  
   
}
    
void loop()
   
{
  //Read Value of 4051 analog-in 0 by setting the values of s0,s1 and s2
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  delay(10); //not sure if this delay is strictly necessary
  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(A5);
    L6 =  analogRead(A4);
    luz(L5,L6);
    comodo(L0,L1,L2,L3,L4,L5);
    
    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);
    
    
     
   }

}



Sétima semana(14/05-18/05): Desenvolvimento final do código.

Nenhum comentário:

Postar um comentário