Ostatnio by urozmaicić dzieciakom zabawę zrobiłem im sygnalizatory LED.
Zabawa autami nabrała nowego znaczenia a przy okazji dzieciaki się uczą rozpoznawać światła i zachowania na drodze
Wyszło tak:
Załącznik:
WP_20170918_17_44_35_Pro.jpg [ 385.31 KiB | Przeglądany 165 razy ]
Załącznik:
WP_20170918_17_44_54_Pro.jpg [ 1.96 MiB | Przeglądany 165 razy ]
Płytka sterowania:
Załącznik:
WP_20170915_17_29_49_Pro.jpg [ 2.22 MiB | Przeglądany 165 razy ]
Całość oparte o mikrokontroler ATTiny13V - wersja na niskie napięcie zasilania.
Jako zasilanie służy bateria CR2032.
Schemat banalny, złącze programowania uC i połączenie do diod.
Załącznik:
schemat.png [ 74.5 KiB | Przeglądany 165 razy ]
Program sterujący napisany w C, skompilowany w darmowym Atmel Studio 7.:
Sygnalizator posiada dwa tryby pracy które włączają się na przemiennie przed startem.
* tryb 1: uszkodzenie - ciągle migające pomarańczowe
* tryb 2: Normalna praca - pełen cykl
Kod:
/*
* Sygnalizator.c
*
* Created: 2017-09-13 16:13:43
* Author : mgr
*/
#ifndef F_CPU
#define F_CPU 1200000
#endif
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>
enum Power
{
On = 0,
Off
} Power;
enum Led
{
Green,
Yellow,
Red
} Led;
void ChangeState(enum Led led, enum Power power)
{
int pin =0;
switch(led)
{
case Green:
pin = (1 << PINB2);
break;
case Yellow:
pin = (1 << PINB4);
break;
case Red:
pin = (1 << PINB3);
break;
}
if(power == On)
{
PORTB &= ~pin;
}
else
{
PORTB |= pin;
}
}
void normal()
{
//Setup Green
ChangeState(Red, Off);
ChangeState(Yellow, Off);
ChangeState(Green, On);
_delay_ms(7000);
ChangeState(Green, Off);
ChangeState(Yellow, On);
_delay_ms(2000);
ChangeState(Yellow, Off);
ChangeState(Red, On);
_delay_ms(7000);
ChangeState(Yellow, On);
_delay_ms(2000);
}
void error()
{
ChangeState(Yellow, On);
_delay_ms(1000);
ChangeState(Yellow, Off);
_delay_ms(1000);
}
int main(void)
{
DDRB = 0xFF;
ChangeState(Green, Off);
ChangeState(Red, Off);
ChangeState(Yellow, Off);
int mode = eeprom_read_byte(0x00);
if(mode == 0xFF)
{
eeprom_write_byte(0x00, 0x00);
mode = 0x00;
}
eeprom_write_byte(0x00, mode ^ 1);
while (1)
{
if(mode == 0)
{
normal();
}
else
{
error();
}
}
}
W załączniku pełne pliki projektu w Eagle.
Załącznik:
Sygnalizator.zip [789.72 KiB]
Pobrany 10 razy
_________________
Nic tak nie cieszy, jak własny szybowiec
____________SAM 18-025_____________
https://gliders.pl