sábado, 29 de setembro de 2012

Arduino - Semáforo interativo

Daew pessoal!

Testei o projeto do ebook que veio junto com o meu Arduino Uno Rev3, nele podemos simular um semáforo interativo para pedestres, quando pressionado o botão o semáforo para carros fecha e abre para os pedestres.

Cricuito para o projeto.



Código:


// Projeto Semaforo interativo

int carRed = 12;
int carYellow = 11;
int carGreen = 10;
int pedRed = 8;
int pedGreen = 9;
int button = 2;        // Botao
int crossTime = 5000;  // Tempo travessia pedestre
unsigned long changeTime;// Tempo ultimo botao

void setup() {
  pinMode(carRed, OUTPUT);
  pinMode(carYellow, OUTPUT);
  pinMode(carGreen, OUTPUT);
  pinMode(pedRed, OUTPUT);
  pinMode(pedGreen, OUTPUT);
  pinMode(button, INPUT);

  digitalWrite(carGreen, HIGH);
  digitalWrite(pedRed, HIGH);
}

void loop() {
  int state = digitalRead(button);  //Verifica seo botao foi pressionado
  if (state == HIGH && (millis() - changeTime) > 5000) {
    changeLights();
  }
}

void changeLights() {
  digitalWrite(carGreen, LOW);
  digitalWrite(carYellow, HIGH);
  delay(2000);

  digitalWrite(carYellow, LOW);
  digitalWrite(carRed, HIGH);
  delay(1000);

  digitalWrite(pedRed, LOW);
  digitalWrite(pedGreen, HIGH);
  delay(crossTime);

  for (int x=0; x<10; x++) {
    digitalWrite(pedGreen, HIGH);
    delay(250);
    digitalWrite(pedGreen, LOW);
    delay(250);
  }

  digitalWrite(pedRed, HIGH);
  delay(500);

  digitalWrite(carYellow, HIGH);
  digitalWrite(carRed, LOW);
  delay(1000);

  digitalWrite(carGreen, HIGH);
  digitalWrite(carYellow, LOW);

  changeTime = millis();

}


Funcionamento:
 
A o projeto foi retirado do Ebook Arduino Básico - Michael McRoberts 

domingo, 23 de setembro de 2012

Arduino Uno - Sensor LDR e LM35 apresentando informações no display 16x2

 
Meu primeiro projeto com o Arduino Uno.

Função: Apresentar no display 16x2 as informações obtidas pelos sensores LDR e LM35.

Segue o código garimpado na net e adaptado para monitorar os dois sensores.
 
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int pinoAnalogico = 3;
int pinoAnalogico2 = 0;
int valorAnalogico;
int valorAnalogico2;
int temperatura;
int luminosidade;
int pinoPotenciometro = 0;
long valorPotenciometro = 0;

void setup()
{
  Serial.begin(9600);
  lcd.begin(16, 2);
}

void loop()
{
  escrever_LCD();
}

void escrever_LCD()
{
  valorPotenciometro = analogRead(pinoPotenciometro);
  temperatura = ler_Temperatura();
  luminosidade = ler_Luminosidade();

  lcd.setCursor(0, 0);
  lcd.print("Claridade: ");
  lcd.print(luminosidade);
  lcd.setCursor(13, 0);
  lcd.setCursor(0, 1);
  lcd.print("Temperatura: ");
  lcd.print(temperatura);
  lcd.setCursor(12, 1);
}

int ler_Luminosidade()
{
  luminosidade = analogRead(pinoAnalogico2);
  Serial.println(luminosidade);
  return luminosidade;
  delay(1000);
}

int ler_Temperatura()
{
  valorAnalogico = analogRead(pinoAnalogico);
  temperatura = ( 5 * valorAnalogico * 100)/1024;
  Serial.println(temperatura);
  return temperatura;
  delay(1000);
}



Busca