Os Sistemas Embarcados
Por: icaro32 • 4/4/2017 • Trabalho acadêmico • 5.237 Palavras (21 Páginas) • 317 Visualizações
Sistemas Embarcados
- Projete o software embarcado de um semafórico digital para ser implementado em um micro controlador compatível com o arduíno studio. Conseidere que este software será instalado em um sinal de transito conforme definido abaixo:
[pic 1]
- Especifique os pinos utilizados para cada saída
#define VDP 2 //VERDE DA PRINCIPAL
#define AMP 3 //AMARELO DA PRINCPAL
#define VMP 4 // VERMELHO DA PRINCIPAL
#define VDS 5 // VERDE DA SECUNDARIA
#define AMS 6 // AMARELO DA SECUNDARIA
#define VMS 7 // VERMELHO DA SECUNDARIA
#define BTN1 0 // BOTÃO DA PRINCPAL
#define BTN2 1 // BOTÃO DA SECUNDARIA
int pins[6]= {VDP, AMP,VMP,VDS,AMS,VMS};
int btns[2] = {BTN1,BTN2};
int states1[6] ={HIGH,LOW,LOW,LOW,LOW,HIGH};
int states2[6] ={LOW,HIGH,LOW,LOW,LOW,HIGH};
int states3[6] ={LOW,LOW,HIGH,HIGH,LOW,LOW};
int states4[6] ={LOW,LOW,HIGH,LOW,HIGH,LOW};
void setup()
{
for(int i = 0; i < 6; i++)
{
pinMode(pins[i], OUTPUT);
}
for(int i = 0; i < 2; i++)
{
pinMode(btns[i], INPUT);
}
}
- Escreva o código e mostre o resultado de sua execução (sugestão: utilize printf para mostrar o sinal de cada pino(HIGH ou LOW), considerando os tempos de:
- Amarelo = 5 segundos para ambos os casos
- Verde principal = 50 segundos
- Verde Secundário = 25 Segundos
- Existe um tempo de 5 segundos entre o fechamento de um sinal até que o sinal na outra via seja aberto.
void setstate(int newstate[])
{
for (int i=0; i<6; i++)
{
digitalWrite(pins[i],newstate[i]);
}
}
void setstate(int statenumber)
{
switch (statenumber)
{
case 1: setstate(states1);
break;
case 2: setstate(states2);
break;
case 3: setstate(states3);
break;
case 4: setstate(states4);
break;
}
}
void loop()
{
setstate(1);
delay(50000);
setstate(2);
delay(5000);
setstate(3);
delay(25000);
setstate(4);
delay(5000);
}
void blink()
{
}
- Apresente o diagrama de estados
[pic 2]
[pic 3][pic 4]
Tempo: 25 segundos Tempo: 5 segundos Tempo: 5 segundos
Sinal Secundário Sinal Secundário Sinal Secundário
[pic 5][pic 6][pic 7]
[pic 8][pic 9][pic 10][pic 11]
Tempo: 50 segundos Tempo: 5 segundos Tempo: 5 segundos
Sinal Principal Sinal Principal Sinal Principal
- Escreva o código e mostre o resultado de sua execução(sugestão: utilize printf para mostrar o sinal de cada pino(HIGH ou LOW)
- Agora repita o item anterior fechando somente o sinal quando estiverem carros esperando o sinal abrir, garantindo que a via Primária tem prioridade e, que a via secundária tem prioridade na ausência de veículos na via principal.
#define VDP 2
#define AMP 3
#define VMP 4
#define VDS 5
#define AMS 6
#define VMS 7
#define BTN1 0
#define BTN2 1
int pins[6]= {VDP, AMP,VMP,VDS,AMS,VMS};
int btns[2] = {BTN1,BTN2};
int states1[6] ={HIGH,LOW,LOW,LOW,LOW,HIGH};
int states2[6] ={LOW,HIGH,LOW,LOW,LOW,HIGH};
int states3[6] ={LOW,LOW,HIGH,HIGH,LOW,LOW};
int states4[6] ={LOW,LOW,HIGH,LOW,HIGH,LOW};
int viaP=5;
int viaS=0;
int p=0;
void setup(){
for(int i=0;i<6;i++){
...