Vídeo: https://www.youtube.com/watch?v=D6xESChZbdk&feature=youtu.be
TimerInt
Properties:
Interupt period = 10ms
BitIO(LEDs)
Properties:
Component name = Script
Pin for I/O = (Esquemático)
Direction = Output
Methods:
ClrVal = generate code
SetVal = generate code
(Não é necessário gerar nenhum outro código)
BitIO(Push button)
Properties:
Component name = Botao
Pin for I/O = PTA13
Direction = Input
ADC(LDR)
Properties:
Component name = LDR
A/D channel (pin) = PTB0
Conversion time = 9.61us
Arquivo main.c
Global variables:
main function:
for(;;) { // Loop
if(contadoradc>200){ // Check LDR state for night mode // 200 é o tempo que o LDR
deve ser ativado para que o night mode passe a valer
if(contadoradc==205){ // LEDs apagados
LEDVermelhoCarros_ClrVal();
LEDAmareloCarros_ClrVal();
LEDVerdeCarros_ClrVal();
LEDVermelhoPedestres_ClrVal();
LEDVerdePedestres_ClrVal();
}
if(contadoradc==400){
LEDAmareloCarros_SetVal();
LEDVermelhoPedestres_ClrVal();
}
if(contadoradc==600){
LEDAmareloCarros_ClrVal();
LEDVermelhoPedestres_SetVal();
contadoradc=210; // Loop para piscar vermelho e amarelo
}
}
else{ // Case the LDR is not in night mode
if(estadobotao==1){ // Estado inicial quando o botão não é apertado
LEDVermelhoCarros_ClrVal();
LEDAmareloCarros_ClrVal();
LEDVerdeCarros_SetVal(); // Verde para os carros
LEDVermelhoPedestres_SetVal(); // Vermelho para os pedestres
LEDVerdePedestres_ClrVal();
}
if(estadobotao==0){ // Estado quando o botão é apertado
if(contador==200){ // Amarelo para os carros
LEDVerdeCarros_ClrVal();
LEDAmareloCarros_SetVal();
}
if(contador==400){ // Vermelho para os carros e verde para os pedestres
LEDAmareloCarros_ClrVal();
LEDVermelhoCarros_SetVal();
LEDVermelhoPedestres_ClrVal();
LEDVerdePedestres_SetVal();
}
if(contador==600){
LEDVermelhoPedestres_SetVal();
}
if(contador==610){
LEDVerdePedestres_ClrVal();
}
if(contador==700){
LEDVermelhoPedestres_ClrVal();
}
if(contador==800){
LEDVermelhoPedestres_SetVal();
}
if(contador==900){
LEDVermelhoPedestres_ClrVal();
}
if(contador==1000){ // Depois de piscar o vermelho
contador=0; // Limpa o contador para próxima interação
estadobotao=1; // Habilita o estado para ler o botão novamente
}
}
}
}
Arquivo events.c