-
Posts
3 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que Wesley Guntzel postou
-
Ativar comando somente se o botão for pressionado
Wesley Guntzel respondeu ao tópico de Wesley Guntzel em Eletrônica
Obrigado @Isadora Ferraz. Porém ainda não encontrei um complemento de código correto para meu caso. -
Boa noite. Estou fazendo um projeto de um semáforo diferenciado, acessível para cegos. Ele funcionará de modo que quando todos os sinais de carros estiverem vermelhos, o sinal do pedestre abre e o pedestre passa. Caso o pedestre for cego, o mesmo deverá apertar um botão localizado em uma altura acessível do chão, ao lado do poste do semáforo e aguardar um aviso sonoro que é acionado quando o semáforo de pedestre ficar verde. Por enquanto estou usando um buzzer como emissor de som. Entretanto, não estou conseguindo adaptar ao meu projeto o pressionar do botão para ativar o som do buzzer, pois quando o sinal de pedestre abre, o buzzer toca toda vez, e não é isso que eu quero... somente se o botão for pressionado previamente. Eis o código Arduíno que estou usando: /* Modos: 1- Normal 2- Amarelo Piscante 3- Manual Estados: 1- 1Vd - 2Vm 2- 1Am - 2Vm 3- 1Vm - 2Vd 4- 1Vm - 2Am Velocidades: 1-Rápido 2-Normal 3-Lento */ #include <EEPROM.h> #define pin1Vm 10 #define pin1Am 9 #define pin1Vd 7 #define pin2Vm 6 #define pin2Am 5 #define pin2Vd 4 #define pinpedver 11 #define pinpedvm 13 #define botao 3 #define buzzer 8 #define pressionado 0 #define ligado 0 #define delayV1 5; #define delayV1Am 1; #define delayV2 20; #define delayV2Am 6; #define delayV3 80; #define delayV3Am 12; byte modo; byte estado; byte velocidade; byte modoAnt; byte estadoAnt; byte startMode; byte startVelo; byte pisca; int delayControl; int cicloSemaforo; String comando; char serialBuff; void setup() { pinMode(pin1Vm, OUTPUT); //Pino Vermelho - Semaforo 1 pinMode(pin1Am, OUTPUT); //Pino Amarelo - Semaforo 1 pinMode(pin1Vd, OUTPUT); //Pino Verde - Semaforo 1 pinMode(pin2Vm, OUTPUT); //Pino Vermelho - Semaforo 2 pinMode(pin2Am, OUTPUT); //Pino Amarelo - Semaforo 2 pinMode(pin2Vd, OUTPUT); //Pino Verde - Semaforo 2 pinMode(pinpedver, OUTPUT); //Pino Verde - Semaforo pedestre pinMode(pinpedvm, OUTPUT); //Pino Vermelho - Semaforo pedestre pinMode(buzzer, OUTPUT); //Buzzer pinMode(pressionado, OUTPUT); //botão pressionado pinMode(botao, OUTPUT); //botão pressionado //Lê modo de inicio e grava o próximo modo de inicio na EEPROM startMode = EEPROM.read(0); if (startMode == 0){ EEPROM.write(0, 1); } else { EEPROM.write(0, 0); } //Lê modo de inicio e grava o próximo modo de inicio na EEPROM startVelo = EEPROM.read(1); if ((startVelo < 1) || (startVelo > 3)) { startVelo = 2; //Velocidade Inicial = Normal EEPROM.write(1, 2); } //Inicia as variaveis modo = startMode + 1; estado = 1; velocidade = startVelo; pisca = 0; delayControl = 0; cicloSemaforo = 0; modoAnt = 99; //Força a primeira execução estadoAnt = 99; //Força a primeira execução comando = ""; Serial.begin(9600); } void loop() { if (delayControl < 49) { //Executa 49 ciclos sem atividade, porém recebendo comandos. As atividades são executadas apenas no ciclo 50. while (Serial.available() > 0) { serialBuff = Serial.read(); comando = comando + serialBuff; } if (comando != "") { if ((comando.substring(0,1) == "V") || (comando.substring(0,1) == "v")) { //Velocidade if (comando.substring(1,2) == "1") { velocidade = 1; } //Rápido if (comando.substring(1,2) == "2") { velocidade = 2; } //Normal if (comando.substring(1,2) == "3") { velocidade = 3; } //Lento cicloSemaforo = 0; EEPROM.write(1, velocidade); } if ((comando.substring(0,1) == "M") || (comando.substring(0,1) == "m")) { //Modo if (comando.substring(1,2) == "1") { modo = 1; } //Normal if (comando.substring(1,2) == "2") { modo = 2; } //Amarelo Piscante if (comando.substring(1,2) == "3") { modo = 3; } //Manual cicloSemaforo = 0; delayControl = 50; estadoAnt = 99; //Força a execução } if (comando.substring(0,1) == "*") { //Muda o estado do semáforo estado++; if (estado > 6) { estado = 1; } delayControl = 50; //Força a execução imediata } comando = ""; } delayControl++; } else { if ((modo == 1) || (modo == 3)) { //Modo Automático ou Manual if (modo != modoAnt) { //Inicia o estado para quando o modo for alterado para normal (também é executado quando iniciado) estado = 1; cicloSemaforo = 0; } if (cicloSemaforo > 0) { //Conta os ciclos para mudar de fase cicloSemaforo--; } else { if (modo == modoAnt) { //Inicia o estado para quando o modo for alterado para normal (também é executado quando iniciado) if (modo == 1) { //Se for modo Automático estado++; if (estado > 6) { estado = 1; } } } //Atualiza o tempo do ciclo if ((estado == 1) || (estado == 3)) { switch (velocidade) { case 1: //Rápido cicloSemaforo = delayV1; break; case 2: //Normal cicloSemaforo = delayV2; break; default: //Lento cicloSemaforo = delayV3; break; } } else { switch (velocidade) { case 1: //Rápido cicloSemaforo = delayV1Am; break; case 2: //Normal cicloSemaforo = delayV2Am; break; default: //Lento cicloSemaforo = delayV3Am; break; } } } //Processa o Estado if (estado != estadoAnt) { switch (estado) { case 1: //1Vd - 2Vm // Primeira Mudança - 1: verde, 2: vermelho digitalWrite(pin1Vm, LOW); digitalWrite(pin1Am, LOW); digitalWrite(pin2Vd, LOW); digitalWrite(pin2Am, LOW); digitalWrite(pin1Vd, HIGH); digitalWrite(pin2Vm, HIGH); digitalWrite(pinpedvm, HIGH); break; case 2: //1Am - 2Vm // Segundo sinal, 1: amarelo, 2:vermelho digitalWrite(pin1Vm, LOW); digitalWrite(pin1Vd, LOW); digitalWrite(pin2Vd, LOW); digitalWrite(pin2Am, LOW); digitalWrite(pin1Am, HIGH); digitalWrite(pin2Vm, HIGH); digitalWrite(pinpedvm, HIGH); break; case 3: //1Vm - 2Vd// Terceiro sinal, 1: vermelho, 2:verde digitalWrite(pin1Vd, LOW); digitalWrite(pin1Am, LOW); digitalWrite(pin2Am, LOW); digitalWrite(pin2Vm, LOW); digitalWrite(pin1Vm, HIGH); digitalWrite(pin2Vd, HIGH); digitalWrite(pinpedvm, HIGH); break; case 4: //1Vm - 2Am// Quarto sinal, 1: vermelho, 2: amarelo digitalWrite(pin1Vd, LOW); digitalWrite(pin1Am, LOW); digitalWrite(pin2Vd, LOW); digitalWrite(pin2Vm, LOW); digitalWrite(pin1Vm, HIGH); digitalWrite(pin2Am, HIGH); digitalWrite(pinpedvm, HIGH); break; case 5: //1Vm - 2Vm // Quinto sinal, 1: vermelho, 2: vermelho, semáforo pedestre verde e buzina ligada digitalWrite(pin1Vd, LOW); digitalWrite(pin1Am, LOW); digitalWrite(pin2Vd, LOW); digitalWrite(pin2Vm, HIGH); digitalWrite(pin1Vm, HIGH); digitalWrite(pin2Am, LOW); digitalWrite(pinpedvm, LOW); digitalWrite(pinpedver, HIGH); tone(buzzer, 440, 300); // play tone 57 (A4 = 440 Hz) digitalWrite(11, LOW); delay(1000); // Wait for 1000 millisecond(s tone(buzzer, 494, 300); // play tone 59 (B4 = 494 Hz) digitalWrite(11, LOW); delay(buzzer); // Wait for 1000 millisecond(s tone(8, 523, 300); // play tone 60 (C5 = 523 Hz) break; case 6: //1Vm - 2Vm // Quinto sinal, 1: amarelo, 2: vermelho, semáforo pedestre vermelho e buzzer tocando digitalWrite(pin1Vd, LOW); digitalWrite(pin1Am, HIGH); digitalWrite(pin2Vd, LOW); digitalWrite(pin2Vm, HIGH); digitalWrite(pin1Vm, LOW); digitalWrite(pin2Am, LOW); digitalWrite(pinpedvm, HIGH); digitalWrite(pinpedver, LOW); break; } estadoAnt = estado; } } if (modo == 2) { //Modo Piscante digitalWrite(pin1Vm, LOW); digitalWrite(pin1Vd, LOW); digitalWrite(pin2Vm, LOW); digitalWrite(pin2Vd, LOW); if (pisca == 0) { digitalWrite(pin1Am, LOW); digitalWrite(pin2Am, LOW); pisca = 1; } else { digitalWrite(pin1Am, HIGH); digitalWrite(pin2Am, HIGH); pisca = 0; } } delayControl = 0; modoAnt = modo; } delay(10); } Alguém pode me auxiliar a adaptar ao botão? Preciso para um projeto escolar É muito importante pra mim Fico grato.
-
Olá! Tenho um notebook Acer 5338, processador Genuine Intel t1600 e memória de 2 gb. Porém, ele está muito lento e nem a formatação ajudou para melhorá-lo. É possível trocar o processador e a memória?
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais