Oi pessoal!
Terminei meu projeto e gostaria de compartilha-lo com vocês:
No primeiro vídeo, estava no processo de bancada ainda, veja como foi:
Depois percebi que aquela programação não funcionava quando colocava fonte de energia, aí fiz uma nova programação e instalei minha escada, veja no primeiro vídeo.
Peças
1 Arduino UNO com cabo USB (Atmega328)
2 74hc595
2 Protoboard BB-01 (840 Pontos)
2 sensores ultrasonicos HC-SR04
16 leds alto brilho (branco)
16 resistores 220 ohms
Kit 70 Jumpers macho para protoboard/matriz de contato
Ferramentas:
Maquita
Furadeira
Serrinha
Código fonte:
/*---------------------------------------------
Comentar
Amigos sou novo aqui no lab. e inventei de querer fazer esse projeto da escada
estou usando um mega 2560 + modulo de rele 16
alterei o programa mas nao esta funcionando ..
sem passar nada na frente do sensor.. o mega, manda sinal pro modulo de rele ligar..
alguem pode me ajudar
#include <NewPing.h>
int led1 = 22;
int led2 = 23;
int led3 = 24;
int led4 = 25;
int led5 = 26;
int led6 = 27;
int led7 = 28;
int led8 = 29;
int led9 = 30;
int led10 = 31;
int led11 = 32;
int led12 = 33;
int led13 = 34;
int led14 = 35;
int led15 = 36;
int led16 = 37;
#define SONAR_NUM 2 // Define o numero de sensores
#define MAX_DISTANCE 200 // Distancia maxima
#define PING_INTERVAL 33 // Milisegundos de intervalo entre medicoes
unsigned long pingTimer[SONAR_NUM]; // Armazena a quantidade de vezes que a medicao deve ocorrer, para cada sensor
unsigned int cm[SONAR_NUM]; // Armazena o numero de medicoes
uint8_t currentSensor = 0; // Armazena o sensor que esta ativo
NewPing sonar[SONAR_NUM]= { // Armazena informacoes sobre a pinagem dos sensores
NewPing(9, 8, MAX_DISTANCE), // Pino trigger, echo e distancia máxima, para cada sensor
NewPing(4, 3, MAX_DISTANCE),
};
int i = 1;
int totalSaidas = (22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37);
int t = 200; //tempo entre o acender dos leds.
int tempo = 2000; //tempo que fica aceso os leds para depois apagar.
void setup(){
Serial.begin(9600); //Inicializando o serial monitor
pingTimer[0] = millis() + 75; //Primeira medicao começa com 75ms
for (uint8_t i = 1; i < SONAR_NUM; i++) //Define o tempo de inicializacao de cada sensor
pingTimer[i] = pingTimer[i - 1] + PING_INTERVAL;
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6,OUTPUT);
pinMode(led7,OUTPUT);
pinMode(led8,OUTPUT);
pinMode(led9,OUTPUT);
pinMode(led10,OUTPUT);
pinMode(led11,OUTPUT);
pinMode(led12,OUTPUT);
pinMode(led13,OUTPUT);
pinMode(led14,OUTPUT);
pinMode(led15,OUTPUT);
pinMode(led16,OUTPUT);
digitalWrite(totalSaidas,LOW);
}
void loop(){
for (uint8_t i = 0; i < SONAR_NUM; i++) { // Loop entre todos os sensores
if (millis() >= pingTimer[i]) {
pingTimer[i] += PING_INTERVAL * SONAR_NUM; //Define o tempo que o proximo sensor sera acionado
if (i == 0 && currentSensor == SONAR_NUM - 1)
oneSensorCycle(); // Ciclo do sensor completo
sonar[currentSensor].timer_stop(); // Reseta o timer antes de ler o proximo sensor
currentSensor = i; // Número do sensor sendo acionado
cm[currentSensor] = 0; // Se nao houver eco do sensor, seta a distância como zero
sonar[currentSensor].ping_timer(echoCheck);
}
}
}
void echoCheck() { //Se receber um sinal (eco), calcula a distancia
if (sonar[currentSensor].check_timer())
cm[currentSensor] = sonar[currentSensor].ping_result / US_ROUNDTRIP_CM;
}
void oneSensorCycle() { // Ciclo de leitura do sensor
for (uint8_t i = 0; i <SONAR_NUM; i++){
Serial.print(i);
Serial.print("=");
Serial.print(cm[i]);
Serial.print("cm ");
delay(1000);
Serial.println();
}
if (cm[0] > 10 && cm[0] < 100);{
for (int i=1; i<=totalSaidas; i++){
digitalWrite(i, HIGH);
delay(t);
}
delay(tempo);
for (int i=1; i<=totalSaidas; i++){
digitalWrite(i, LOW);
delay(t);
}
}
//Se for detectado objeto entre 0 e 50 cm do sensor2, acende o led
if (cm[1] > 10 && cm[1] < 100) {
for (int i=1; i<=totalSaidas; i++){
digitalWrite(totalSaidas+1-i, HIGH);
delay(t);
}
delay(tempo);
for (int i=1; i<=totalSaidas; i++){
digitalWrite(totalSaidas+1-i, LOW);
delay(t);
}
}
}
Outra pergunta você usa qual arduino o Uno R3, ou o 2560??
Olá amigo, teria o esquema elétrico deste projeto ? pois possuo duas crianças pequenas que sempre levantam a noite e acabam chorando por estar escuto, gostaria de montar este projeto no quarto delas mas acionado por sensor de movimentos, seria possível: desde já vos agradeço
Forte abraço
Oi Fabio!
Essa sensação é indescritível, principalmente quando idealizamos uma ideia, botando a mão na massa e fazendo acontecer do zero! Um abraço!
Oi Marcelo! Muito obrigado!
Acho que nao tem nada mais maravilhoso que ver um projeto nosso ganhando vida. Parabens pela realização do projeto. E que muitos outros ainda sejam realizados.
Sensacional, parabéns!!
Olá Nelson!
Muito obrigado pelo elogio! Eu também não sei programar, mas sei a lógica utilizada. Então fui montando aos pouquinhos. Comecei com programação pra acender um led, depois pra apagar e assim foi. temos na internet vários tutoriais brasileiros com video aulas que mostram desde o hardware e a programação.
Um abraço e boa sorte!
Olá Felipe!
Os leds ficam ligados por 20 segundos, depois se apagam. no vídeo coloquei a velocidade maior pois senão ficaria chato assisti-lo.
Então se a pessoa ficar mais de 20 segundos em uma escada de 15 degraus, realmente ela deve ficar no escuro hahahahaha
abs
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)