Rysunek 1-Arduino Mega 2560
PRACOWNIA MIERNICTWA ELEKTRONICZNEGO/
INTERNETU RZECZY
ĆWICZENIE NR 2
Temat: Arduino. Część 1: proste pomiary podzespołów
elektronicznych
Cel ćwiczenia:
Zapoznanie z krótką teorią na temat Arduino oraz wykonanie czterech zadań treningowych.
Teoria:
Arduino – platforma programistyczna dla systemów wbudowanych oparta na
prostym projekcie Open Hardware przeznaczonym dla mikrokontrolerów montowanych w pojedynczym obwodzie drukowanym, z wbudowaną obsługą układów wejścia/wyjścia oraz standaryzowanym językiem programowania. Język programowania Arduino jest oparty na środowisku Wiring i zasadniczo na
języku C/C++ (kilka prostych przekształceń kodu
wykonywane przed przejściem do avr-gcc). Celem projektu Arduino jest przygotowanie narzędzi –
ogólnodostępnych, tanich, niewymagających dużych nakładów finansowych, elastycznych i łatwych w użyciu przez hobbystów. Częściowo Arduino stanowi również alternatywę dla
osób, które nie mają dostępu do bardziej zaawansowanych kontrolerów, wymagających bardziej skomplikowanych narzędzi
Porty:
Na ćwiczeniach będziemy korzystać z portów PWM i analogowych.
Wejścia analogowe - Wyprowadzenia umożliwiające operacje na sygnale analogowym. Połączone są z wbudowanym przetwornikiem analogowo-cyfrowym. Każde z nich posiada 10-bitową rozdzielczość
(1024 różnych wartości). Dzięki wejściom analogowym użytkownik może obsługiwać rozmaite czujniki (np. akcelerometry lub sensory optyczne), lub stworzyć własny miernik napięcia. Wyjścia PWM - Modulacja szerokości impulsu. Dzięki tym wyprowadzeniom użytkownik może w sposób sprzętowy (bez zajmowania procesora) generować sygnał o zadanym wypełnieniu. Funkcja wykorzystywana np. do sterowania prędkością obrotową silników DC przy użyciu Motor Shieldu lub dowolnego sterownika silników (np. TB6612). Pozwala również na sterowanie pozycją serw.
Instrukcja
Zadanie pierwsze:
Komponenty:
Arduino 2560 Opis:
Zadanie polega na zaprogramowania diody która jest wbudowana w Arduino. Ma się zapalać na pięć sekund i gasnąć.
Rysunek 2- dioda którą będziemy starować
Kod:
void setup() {
pinMode(LED_BUILTIN, OUTPUT);// zainicjowanie pinu LED_BUILTIN jako wyjścir.
void loop() {// nieskończona pętla w , której wykonywany jest kod
digitalWrite(LED_BUILTIN, HIGH); // włączenie diody wbudowanej w Arduino
delay(5000); // dioda pali się przez pięć sekund
digitalWrite(LED_BUILTIN, LOW); // wyłączenie diody wbudowanej w Arduino
delay(5000); // dioda jest wyłączona przez pięć sekund
}
Zadanie drugie:
Komponenty: Arduino 2560 Sound sensor Opis:Zadanie polega na podłączenie sensora dźwięku do Arduino oraz odczytanie jego wskazań poprzez monitor portu szeregowego(można go uruchomić przy pomocy skrótu Ctrl+Shift+m) .
Rysunek 3 - Podłączenie sensora dźwięku(niebieski - A0, czerwony - 5V, czarny - GND)
Kod:
void setup() {
Serial.begin(9600); //Ustawienie szybkości dla szeregowej transmisji danych.
}
int sensorValue = analogRead(A0);//odczyt wartości z sensora dźwięku
Serial.println(sensorValue);//wypisane wartości do monitora portu szeregowego
delay(1000);//sekunda odstepu miedzy odczytami
}
Zadanie trzecie:
Komponenty: Arduino 2560 Sound sensor Opis:Rysunek 4 - podłączenie diody LED(krótsza nóżka do GND, dłuższa do portu PWM nr. 6)
Zadanie polega dołożeniu diody LED i napisaniu kodu, który pozwoli na zapalenie jej po wykryciu klaśnięcia oraz zgaszenie po dwóch klaśnięciach w ciągu sekundy.
Kod:
void setup() {
Serial.begin(9600); pinMode(6, OUTPUT); }
bool blink(bool flag) // funkcja oczekująca na drugie klaśnięcie. Jeżeli klaśniemy w odpowiednim czasie dioda zgaśnie
{
delay(250);
{
int sensorValue3 = analogRead(A0); Serial.println(sensorValue3);
if (sensorValue3 > 100) { flag = true; analogWrite(6, 0); break; } delay(20);
}
return flag; }
void loop() {// nieskończona pętla w której wykonywany jest cały program
label:
delay(150); // 150 milisekund przed każdym pomiarem
int sensorValue = analogRead(A0);//odczyt wskazań z sensora dźwięku
Serial.println(sensorValue); // wyświetlenie wartości w monitorze portu szeregowego
if (sensorValue > 100) // jeżeli klaśniemy odpowiednio głośno dioda zapali się
{
for (;;) {
analogWrite(6, 50); // zapalenie diody LED
delay(150); // odstęp przed kolejnym pomiarem
int sensorValue2 = analogRead(A0); // odczyt wskazań z sensora dźwięku
Serial.println(sensorValue2); // wyświetlenie wartości w monitorze portu szeregowego
if (sensorValue2 > 100) // jeżeli klaśniemy odpowiednio głośno program czeka na kolejne klaśnięcie w okresie 250 milisekund – 2 sekundy od
poprzedniego klaśnięcia. Jeżeli warunek zostanie spełniony dioda LED zgaśnie
{
bool flag = false;
flag = blink(flag); // wywołanie funkcji oczekująca na drugie klaśnięcie
if (flag == true) goto label; }
} }
}
Zadanie dodatkowe:
Dodać opcję zapalenia diody po dwóch klaśnięciach w ciągu sekundy .