segunda-feira, 2 de abril de 2012

Projeto Arduíno : "No Light Home"

Descrição:

Nosso projeto consiste no desenvolvimento de uma casa de repouso para deficientes.
A casa permite que deficientes visuais possam andar sem a utilização de 'bengalas', pois a casa possui sensores que informam o deficiente sua localização e o alerta sobre possíveis objetos em seu caminho. Como dito anteriormente, a casa tem um sistemas de sensores que ajudarão a economizar energia, ou seja, ao passar ou ao permanecer em um cômodo, a luz se acenderá e ao sair, ela se apagará. Como a movimentação é grande, devido aos deficientes, não só visuais, como mudo e surdo e até mesmo os familiares e auxiliares que andam pela casa.

Materiais necessários para a realização do projeto:

- Arduino
- Protoboard
- LEDs
- LDRs
- Resistência de 10k
- Maquete

Etapas do projeto:

Apresentação do projeto em sala de aula:


Primeira semana(02/04-06/04): Análise para a compra dos materiais necessários para o desenvolvimento do projeto e da maquete.






Segunda semana(09/04-13/04): Preparação inicial do desenvolvimento da maquete e do protoboard.


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.

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

Oitava semana(21/05-25/05): Etapa INTERMEDIÁRIA do projeto.

                                                                   Protótipo

Apresentação do projeto em sala de aula:
http://www.4shared.com/office/irtNGqLY/No_Light_Home1.html


- Entrega do pôster e do artigo

Artigo : clique aqui

Pôster : clique aqui





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.




Décima primeira semana(11/06-12/06): P2 - Apresentação FINAL do projeto.

Apresentação FINAL:
Clique aqui para download

terça-feira, 27 de março de 2012

R5 - Exercício extra - a,b e c

                                    

                                     
R5 - Extra - Iten (a) :
Demonstração da direção e sentido de uma carga positiva em um campo elétrico pré-definido.

_
R5 - Extra - Iten (b) :
Demonstra o comportamento de uma carga negativa lançada perpendicularmente em um campo. Seu movimento é circular em direção oposta ao campo.
_

R5 - Extra - Iten (c) :
Demonstra o comportamento de uma carga negativa lançada perpendicularmente em um campo. Seu movimento é circular em direção oposta ao campo.

terça-feira, 6 de março de 2012

R5 - Campo elétrico


"Continue segurando com o mouse a carga positiva de maior massa e superponha as duas cargas. Tente arrastando com o mouse a carga positiva (com movimentos sutis) até que a carga negativa comece a girar ao redor da carga positiva."

Observações:

- Programa usado : Campo elétrico dos sonhos(1.04)
- A carga que está no centro, é positiva +1, com massa 1.000. A carga que está em volta, no caso, girando sobre a carga positiva, é uma carga negativa -1, com massa 1.

terça-feira, 28 de fevereiro de 2012

Roteiro 4


-Programa usado: Arduino.

- Código fonte:
int LDR; //declara variável

float VLDR;

int ledPin=13;
int ledPin1=12;
int ledPin2=3;
int ledPin3=2;

void setup(){

Serial.begin(9600);

pinMode(A0, INPUT);// entrada A0

pinMode(13,OUTPUT); // define o pino 13 como saida
pinMode(12,OUTPUT);
pinMode(3,OUTPUT);
pinMode(2,OUTPUT);

pinMode(9,OUTPUT); }

void loop(){

LDR = analogRead(A0);

VLDR=LDR*5.0000000/1024;

Serial.print(LDR);

Serial.print(" ");

Serial.print(VLDR);

Serial.println ( "\t");

delay(2);

if (LDR > 300 && LDR<325) {

  tone(9,261.6,100);
  digitalWrite(13, HIGH);
  digitalWrite(12, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  
  
  }
if (LDR > 330 && LDR < 375) {

  tone(9,293.7,100);
  digitalWrite(13, LOW);
  digitalWrite(12, HIGH);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  
  }
 if (LDR > 380 && LDR < 460 ) {

  tone(9,329.6,100);
  digitalWrite(12, LOW);
  digitalWrite(3, HIGH);
  digitalWrite(13, LOW);
  digitalWrite(2, LOW);
  }
  if (LDR > 490 && LDR < 540 ) {

  tone(9,349.2,100);
  digitalWrite(3, LOW);
  digitalWrite(2, HIGH);
  digitalWrite(13, LOW);
  digitalWrite(12, LOW);
  }
   if (LDR > 570) {

  tone(9,392.0,100);
  digitalWrite(3, HIGH);
  digitalWrite(2, HIGH);
  digitalWrite(13, HIGH);
  digitalWrite(12, HIGH);
  }

//toque a freqüência de 440 Hz (função tone no pino 9, com duração)

if (LDR < 290){

  digitalWrite(13, LOW);
  digitalWrite(12, LOW);
  digitalWrite(3, LOW);
  digitalWrite(2, LOW);
  noTone(9);
}

//e não toque nada 9 noTone no pino 9; }

}

Roteiro 1 - Complementar


- Programa usado: Arduino

- Código fonte:


         
///
int leitura;  //define a variável leitura que corresponde a uma letra o teclado   
int tempo;
                     
void setup() { 
  pinMode(13, OUTPUT);  //define que o pino 13 será uma saida 
  
  pinMode(4, OUTPUT);
  
  pinMode(3, OUTPUT);
  pinMode(A0, INPUT); 
  
  Serial.begin(9600); 

void loop() { 

    leitura = analogRead(A0);
    
    tempo= millis(); // base de tempo para a coleta 
    
    
    { 
    
    Serial.print(leitura); 
    
    } 
    
    Serial.println(); // imprime em linhas 
    
      

    if (leitura <= 250) { 
        digitalWrite(13, LOW);
        digitalWrite(4, LOW);
        digitalWrite(3, LOW); 
        
    } 
    if (leitura > 250) { 
        digitalWrite(13, HIGH); 
    }
    if ( leitura > 350){
          
        digitalWrite(4, HIGH);
        }
          
     if ( leitura > 450){
            
        digitalWrite(3, HIGH);
          }
        
     
    
  
}