PRACOWNIA MIERNICTWA ELEKTRONICZNEGO/
INTERNETU RZECZY
ĆWICZENIE NR 4
Temat:
Arduino. Część 2: system sterowania diodami
Komponenty:
Płytka stykowa
DFRduino mega2560
Tact Switch THT
Dioda LED 8x
Rezystor 100 OHM 8x
Cel ćwiczenia:
Początkowym celem tego ćwiczenia jest podłączenie układu według wskazanego
schematu a następnie podłączenie 8 diod które imitować będą lampki choinkowe. Głównym
celem jest stworzenie 4 przykładowych układów zapalania lampek (schematy nie mogą się
powielać i nie mogą być stworzone w schemacie 0, 1 który zapala i zgaszą wszystkie lampki
jednocześnie).
Instrukcja
Krok 1.
Podłączenie LED-ów do Arduino
Rysunek 1- W ten sposób podłączamy 8 diod do wejść 0-7
Krok 2.
Rysunek 2-guzik należy podłączyć do wejścia numer 13
Kod z przykładowymi wzorami:
int ledPins[] = { 0, 1, 2, 3, 4, 5, 6, 7 };// Lista wejść do, których podłączone są lampki
#define nBits sizeof(ledPins)/sizeof(ledPins[0])
void convertToBinary(byte n) // Funkcja, która konwertuje liczbę dziesiętną na system binarny
{
for (byte i = 0; i < nBits; i++) { digitalWrite(ledPins[i], n & 1); n /= 2; } } void setup() { pinMode(13, INPUT_PULLUP); }
void all_blink()// Wszystkie lampki migają
{
while (1 == 1) {
// Wszystkie lampki się palą
convertToBinary(255);
delay(2000); // Lampki palą się przez dwie sekundy // Wszystkie lampki są zgaszone
convertToBinary(0);
delay(2000); // Przerwa przed zapaleniem lampek trwa dwie sekundy if (digitalRead(13) == 0) break; // Wciśnięcie guzika przerywa wykonywanie funkcji } } void every_second_blink() { while (1 == 1) {
convertToBinary(170);
delay(2000); // Dwie sekundy przerwy przed zgaszeniem parzystych lampek // Parzyste lampki są zgaszone
convertToBinary(85);
delay(2000); Dwie sekundy przerwy przed zapaleniem parzystych lampek if (digitalRead(13) == 0) break; // Wciśnięcie guzika przerywa wykonywanie funkcji
} }
void numbers() // Wyświetlanie liczb w systemie binarnym od 0 do 255
{ byte count = 0; while (1 == 1) { convertToBinary(count); count++; if (count == 256) count = 0; delay(500);
if (digitalRead(13) == 0) break; // Wciśnięcie guzika przerywa wykonywanie funkcji
} }
void numbers_down() // Wyświetlanie liczb w systemie binarnym od 255 do 0
{ byte count1 = 255; while (1 == 1) { convertToBinary(count1); count1--; if (count1 == 0) count1 = 255; delay(500);
if (digitalRead(13) == 0) break; // Wciśnięcie guzika przerywa wykonywanie funkcji } } void snake() { int num = 224; while (1 == 1) {
convertToBinary(num); // Wyświetlenie węża „na lampkach”
delay(300); //Wąż wykonuje krok co 300 milisekund // Płynne przejście węża gdy dojdzie do końca „ścieżki” if (num == 7) { num = 131; }
else if (num == 131) { num = 193; }
else if (num == 193) { num = 224; }
else { num = num / 2; }
if (digitalRead(13) == 0) break; // Wciśnięcie guzika przerywa wykonywanie funkcji
} }
void loop() {
int number = 1; // Licznik, pozwalający na przechodzenie między programami if (number == 1) { snake(); number++; } // Wywołanie funkcji z wężem
if (number == 2) { numbers_down(); number++; } // Wywołanie funkcji z odliczaniem w dół w systemie binarnym
if (number == 3) { numbers(); number++; } // Wywołanie funkcji z odliczaniem w górę w systemie binarnym
if (number == 4) { every_second_blink(); number++; }// Wywołanie funkcji, miga co druga lampka
if (number == 5) { all_blink(); number = 1; }// Wywołanie funkcji, wszystkie lampki migają
}