primeiro skecth feito por mim mesmo tentei criar um skecth para um semáforo usando um botão para mudar sua fase (1- fechado para carros, aberto para pedestres 2- esperar 3- aberto para carros, fechado para pedestres) uma vez alcançado na terceira fase, volta para a primeira.
aqui vai ::
(comentários em português)
/* */ void setup() { //declaraçao de variaveis globais. int vermelhoc = 1; int verdec =2; int amareloc = 3; int vermelhop = 4; int verdep = 5; //valor atribuido a variavel botao e definido pela leitura do estado do pino 7: HIGH ou LOW int botao = digitalRead(7); //definiçao do sentido de corrente eletrica. pinMode(vermelhoc, OUTPUT); pinMode(verdec, OUTPUT); pinMode(amareloc, OUTPUT); pinMode(vermelhop, OUTPUT); pinMode(verdep, OUTPUT); pinMode(botao, INPUT); } void loop() { //definiçao de variaveis locais int estadosemaforo == 1; //corpo da funçao que define o sistema de fases if(botao == HIGH;){ estadosemaforo == estadosemaforo 1++; } if( estadosemaforo == 4 ){ estadosemaforo == 1; } if ( estadosemaforo == 1 ){ // semaforo dos carros digitalWrite(vermelhoc, HIGH); digitalWrite(amareloc, LOW); digitalWrite(verdec, LOW); //semaforo de pedestres digitalWrite(vermelhop, LOW); digitalWrite(verdep, HIGH); } if ( estadosemaforo == 2 ){ // semaforo dos carros digitalWrite(vermelhoc, LOW); digitalWrite(amareloc, HIGH); digitalWrite(verdec, LOW); //semaforo de pedestres digitalWrite(vermelhop, HIGH); digitalWrite(verdep, LOW); } if ( estadosemaforo == 3 ){ // semaforo dos carros digitalWrite(vermelhoc, LOW); digitalWrite(amareloc, LOW); digitalWrite(verdec, HIGH); //semaforo de pedestres digitalWrite(vermelhop, HIGH); digitalWrite(verdep, LOW); } }
Comentários
Resposta
Você tem muitos erros básicos de sintaxe em seu código. Você realmente precisa ler e estudar mais C e C ++ básicos antes de prosseguir.
Aqui estão alguns exemplos do que descobri:
- Você tem ponto e vírgula onde não deveria haver
- Você confunde
==
e=
em todos os lugares -
estadosemaforo == estadosemaforo 1++;
não faz sentido algum – não tenho idéia do que você quer dizer com isso - Variáveis definidas em
setup
só pode ser usado emsetup
. Se você deseja usar uma variável em múltiplas funções, então ela deve ser global. -
estadosemaforo
só pode ser 1 ou 2. Ele redefine para 1 toda vez queloop()
é executado. - Você não pode apenas esperar ler um alfinete uma vez e seu valor mudar magicamente – você deve lê-lo a cada vez que você deseja saber o estado do pino.
- Você está lendo de um pino digital e, em seguida, usa os resultados dessa leitura para configurar um pino – e então espera que ele faça algo útil.
Comentários
- i ' estou realmente começando aí, mas, muito obrigado. não ' nem pensei sobre esses erros.
int vermelhoc = 1;
eint estadosemaforo == 1;
…. uma dessas não é a sintaxe correta …. pesquise como atribuir valores de variáveis