Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

Podobne dokumenty
Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

Systemy Wbudowane. Arduino - rozszerzanie. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD

Systemy Wbudowane. Arduino, AVR (wersja 2019) Arduino. Arduino. Oprogramowanie. Rys historyczny. Mikrokontroler

Klawiatura matrycowa

LABORATORIUM - ELEKTRONIKI Układy mikroprocesorowe cz.2

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

Systemy Wbudowane. Arduino, AVR (wersja 2018) Arduino. Arduino. Oprogramowanie. Rys historyczny. Mikrokontroler

Systemy Wbudowane. Arduino, AVR. Arduino. Arduino. Arduino. Oprogramowanie. Mikrokontroler. Mikrokontroler Platforma Arduino. Arduino IDE: Arduino C:

Systemy Wbudowane. Arduino, AVR (wersja ) Arduino. Arduino. Arduino. Oprogramowanie. Mikrokontroler

Tematem projektu jest oparty na Arduino zegar pokazujący godzinę oraz datę.

Schemat blokowy architektury AVR

SCL > Pin 21 SDA > Pin 20 VCC > 5V GND > GND

Systemy Wbudowane. Arduino dołączanie urządzeń Wersja Arduino więcej portów I/O. Układy serii 74. Układy serii 74xx a seria 40xx

Uwaga: dioda na wyjściu 13 świeci gdy na wyjście podamy 0.

Prosty system alarmowy z Arduino

Programowanie systemów autonomicznych

Systemy Wbudowane. Arduino rozszerzanie Wersja Plan. Biblioteka EPROM Arduino bez płytki Arduino. Czyli... Co musimy mieć, aby uruchomić chip?

Pomiar odległości z Arduino czujniki, schematy, przykładowe kody

Wprowadzenie do programowania urządzeń Arduino (Arduino dla Informatyków)

Język programowania. KURS Kurs Arduino (1)

6 ARDUINO DLA POCZĄTKUJĄCYCH. PODSTAWY I SZKICE

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Rafał Staszewski Maciej Trzebiński, Dominik Derendarz

Systemy wbudowane Arduino, AVR

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

Zmierzyć się z żywiołami, czyli jak zbudować własną stację badawczą! Zaczynamy! Pole komunikatów programu. Nawigacja w programie Arduino

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

UW-DAL-MAN v2 Dotyczy urządzeń z wersją firmware UW-DAL v5 lub nowszą.

Arduino dla początkujących. Kolejny krok Autor: Simon Monk. Spis treści

Listing_ $crystal = deklaracja

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Pilot RF 4-kanałowy + odbiornik XY-DJM-5V umożliwia zdalne sterowanie do czterech urządzeń. Nadajnik pilot MX804. Odbiornik XY-DJM.

Moduł komunikacyjny Modbus RTU do ciepłomierza SonoMeter 30

Przetwornik analogowo-cyfrowy

Wprowadzenie do programowania urządzeń Arduino (Arduino dla Informatyków)

Komunikacja w mikrokontrolerach Laboratorium

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Wyświetlacz LCD. Ogólne zasady działania

Pomiar temperatury Czujnik temperatury TMP36

Jednofazowy licznik energii elektrycznej z interfejsem Modbus, pomiar bezpośredni

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Nazwa implementacji: Zróbmy grę - Tetris. Autor: Łukasz Ciężki

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

2. Architektura mikrokontrolerów PIC16F8x... 13

RS485 MODBUS Module 8I8O

Kod produktu: MP01105

Nazwa implementacji: Pamięć i zręczność - zapamiętaj kolejność. Autor: Krzysztof Bytow

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

Instrukcja MM-717 Tarnów 2010

DZT Licznik energii elektrycznej Sieć trójfazowa 4-przewodowa Połączenie bezpośrednie 100A Wyjście impulsowe oraz RS485/Modbus.

SiMod-X-(A1) Przetwornik parametrów powietrza z interfejsem RS485 (MODBUS RTU) oraz wyjściem analogowym (dotyczy wersji -A1)

Systemy wbudowane Obsługa interfejsu 1-Wire na przykładzie termometru DS18B20

1W-H3-04P (K)* *Litera K odnosi się do wersji czytnika ze wspólną katodą. Czytnik RFID 125 khz Unique. Karta produktu

Systemy Wbudowane. Arduino dołączanie urządzeń Wersja Arduino bez płytki Arduino. Czyli... Eliminowanie modułu z projektu. Na płytce...

Samba OPLC SM35-J-R20

DZT Licznik energii elektrycznej Sieć trójfazowa 4-przewodowa Połączenie bezpośrednie 100A Wyjście impulsowe oraz RS485/Modbus.

Funkcja (podprogram) void

Kurs Arduino #2 podstawy programowania, porty I/O. 2 //Zawartość programu. 1 int main() { void setup() { //Instrukcje, które wykonają się jeden raz

Systemy Wbudowane. Raspberry Pi komunikacja szeregowa (wersja 2019) Higiena pracy z Qt. Komunikacja szeregowa. Qt Creator i uruchamianie.

Kurs Arduino dla początkujących - Michał Jaworski str. 1. Lekcja 5

Jednofazowy licznik energii elektrycznej z interfejsem Modbus

Samba OPLC SM35-J-T20

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

DZT WEJŚCIE Napięcie znamionowe: (U n

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

RS485 MODBUS Module 8I8RO

RS485 MODBUS Module 8I8RO

Tematyka zajęć. Przypomnienie: Prawo Ohma. Przypomnienie: I prawo Kirchhoffa. Jak płynie prąd? Jak płynie prąd?

DZT WEJŚCIE Napięcie znamionowe: (U n

Karta katalogowa. Vision OPLC V560-T25B

Pomiar natężenia światła (005; ; arduino, processing)

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

Przemysłowy odtwarzacz plików MP3

Zastosowanie moduł Wi-Fi ESP-12 (1) Wirtualny interfejs szeregowy

Programowanie mikrokontrolerów AVR

Przyrząd do grania bluesa Projekt zaliczeniowy z przedmiotu Programowanie Mikrokontrolerów

m e d i a s e r v i c e Moduł kamery JPEG z komunikacją szeregową CJ0706A

Moduł komunikacyjny Modbus RTU w standardzie RS-485 do ciepłomierza SonoMeter 31 i przelicznika energii Infocal 9

Krótki wstęp o wyświetlaczach. Jak zmusić wyświetlacz do pracy?

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

MS360-LPM. wersja 1.09 (wersja robocza) Dokumentacja użytkownika

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

1W-H0-04P (K)* *Litera K odnosi się do wersji czytnika ze wspólną katodą. Czytnik RFID MHz Mifare. Karta produktu

Oscyloskop (007; ; arduino; processing)

Karty SD posiadają 9 wyprowadzeń. Dodatkowo karta SD ma na brzegu przełącznik blokujący możliwość zapisu. Karta SD operuje na napięciu 3,3V.

LMWD-2X LISTWOWY MODUŁ WYJŚĆ DWUSTANOWYCH DOKUMENTACJA TECHNICZNO-RUCHOWA. Wrocław, listopad 1999 r.

Otwór w panelu WYMIAR MINIMALNIE OPTYMALNIE MAKSYMALNIE A 71(2,795) 71(2,795) 71,8(2,829) B 29(1,141) 29(1,141) 29,8(1,173)

Przemysłowy odtwarzacz plików MP3 SD ze wzmacniaczem 2x10 Watt

Technika Mikroprocesorowa

Arduino Power Shield. Moduł Arduino do sterowania silnikami dużej mocy i pomiaru prądu

Programowanie mikrokontrolerów. 8 listopada 2007

Częstościomierz wysokiej rozdzielczości

Transkrypt:

Arduino C - stałe Systemy Wbudowane Arduino C Wersja 2018 Unikać redefiniowania istniejących stałych. Stosowane dla polepszenia zrozumiałości kodu. Lepiej HIGH niż 0x01 Lepiej INPUT_PULLUP niż 0x2 Uwzględniają wielkość liter. mgr inż. Marek Wilkus Wydział Inżynierii Metali i Informatyki Przemysłowej AGH Kraków http://home.agh.edu.pl/~mwilkus 1 2 true, false HIGH Stan wysoki (wyjście) Włączenie 20K rezystorów podciągających (wejście). LOW Stan niski (wyjście) Wyłączenie 20K rezystorów podciągających (wejście). INPUT, OUTPUT, INPUT_PULLUP INPUT_PULLUP: pinmode(12, INPUT); digitalwrite(12,high); LED_BUILTIN wyprowadzenie, do którego podłączony jest LED diagnostyczny, w Arduino Uno pin 13. 3 4 Matematyczne: #define PI 3.1415926535897932384626433832795 #define HALF_PI 1.5707963267948966192313216916398 #define TWO_PI 6.283185307179586476925286766559 #define DEG_TO_RAD 0.017453292519943295769236907684886 #define RAD_TO_DEG 57.295779513082320876798154814105 #define EULER 2.718281828459045235360287471352 Funkcje matematyczne min(x,y), max(x,y) abs(x) constrain(x,a,b) x gdy x [a..b] a gdy x<a b gdy x>b map(liczba,fromlow,fromhigh,tolow,tohigh) Mapuje wartość z jednego przedziału na inny Nie obsługuje liczb zmiennoprzecinkowych! pow(podstawa, wykladnik), sqrt(x) radians(deg), degrees(rad) sq(x) = x*x 5 6

Operacje na bitach bitset(x,n) zapisuje 1 na bit n zmiennej x. bitclear(x,n) zapisuje 0. Operacje na bitach bitwrite(x,n,b) zapisuje n-ty bit zmiennej x wartością b (1/0 lub HIGH/LOW). byte k=0; bitset(k,2); bitset(k,3); 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 bitread(x,n) odczytuje wartość n-tego bitu zmiennej x. bitclear(k,2); 0 0 0 0 1 0 0 0 7 8 Czas Jeszcze raz przerwania delay(x), delaymicroseconds(x) micros() - liczba µs od uruchomienia Arduino (lub ostatniego przeładowania tego licznika). millis() - jak micros(), w milisekundach. byte ledstate = LOW; long previousmillis = 0; long interval = 500;... unsigned long currentmillis = millis(); if(currentmillis - previousmillis > interval) previousmillis = currentmillis; if (ledstate == LOW) ledstate = HIGH; ledstate = LOW; Tymczasowe wyłączenie przerwań na wskazanym fragmencie kodu: nointerrupts();... interrupts(); Wyłączenie obsługi przerwania: detachinterrupt(nrprzerwania); digitalwrite(ledpin, ledstate); 9 10 DHT-11 DHT-11 - protokół Sensor temperatury i wilgotności działający na jednoprzewodowej magistrali. Zasilanie: 5V Podłączenie: ---> Komunikacja dwustronna 0..50 *C, max 80RH Uwaga na pin 3/4! Zapytanie z MCU: Linia komunikacyjna w stan niski na 18ms. Później z powrotem w stan wysoki. DHT11 wysyła stan niski (80µs)->wysoki(80µs) DHT11 wysyła dane (po ok. 40µs): 1: 8 bit: Wilgotność 2: 8 bit: Wilgotność, część dziesiętna 3: 8 bit: Temperatura 4: 8 bit: Temperatura, część dziesiętna 5: 8 bit: Suma kontrolna: Ostatnie 8 bit z 1+2+3+4 11 12

DHT-11: Transmisja Każdy bit zaczyna się 50µs stanem niskim, czas późniejszego stanu wysokiego identyfikuje czy przesyłane jest 0 czy 1: 26-28µs 0 70µs 1 DHT-11: Implementacja //Zapytanie: pinmode(pin, OUTPUT); digitalwrite(pin, LOW); delay(18); digitalwrite(pin, HIGH); delaymicroseconds(40); pinmode(pin, INPUT); //Czekamy na dane while(digitalread(pin) == LOW)... //Obsługa time-out'u while(digitalread(pin) == HIGH)... //Obsługa time-out'u Następnie w ten sam sposób przesyłany jest kolejny bit. 13 14 DHT-11: Odbiór danych Biblioteka DHT byte data[5]; //dla przejrzystości pominięto zerowanie tablicy byte currentbyte=0; byte currentbit=7; for (int i=0; i<40; i++) while(digitalread(pin) == LOW)... //Obsługa time-out'u unsigned long t = micros(); //pomiar czasu - start while(digitalread(pin) == HIGH)... //Obsługa time-out'u if ((micros() - t) > 30) data[currentbyte] = (1 << currentbit); if (currentbit == 0) // następny bajt currentbit = 7; currentbyte++; currentbit--; 15 #include <dht.h> dht DHT; #define DHT11_PIN 2 #define F_PIN 4 #define TEMP_MAX 29 void setup() Serial.begin(9600); Serial.println("Termostat "); Serial.println(); pinmode(f_pin, OUTPUT); digitalwrite(f_pin,low); Serial.print("DHT11, \t"); int chk = DHT.read11(DHT11_PIN); Serial.print(chk); Serial.print(",\t"); Serial.print(DHT.humidity, 1); Serial.print(",\t"); double temp = DHT.temperature; Serial.println(temp, 1); if (temp>= TEMP_MAX) digitalwrite(f_pin,high); digitalwrite(f_pin,low); delay(2000); 16

Podłączanie wyświetlacza LCD Podłączanie wyświetlacza LCD Zapis wartości do rejestru danych + zapis rozkazu do rejestru rozkazów (linia RS) Dla wielu wyświetlaczy zgodnych z Hitachi wbudowana biblioteka. RS Enable D4 D5 D6 D7 #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() void setup() Ilość kolumn Ilość wierszy lcd.begin(16, 2); lcd.begin(16, 2); lcd.print("hello, world!"); lcd.print("hello, world!"); lcd.setcursor(0, 1); lcd.setcursor(0, 1); lcd.print("dolna linia"); lcd.print("dolna linia"); 19 Kolumna wiersz 20 Przełączanie tranzystorem Jak dobrać tranzystor? PNP/NPN, Si, Dopuszczalny prąd I C (P tot ), Dopuszczalne napięcie V CEO Parametry termiczne. 22 Biblioteki Wbudowane pozwalają na obsługę: EEPROMu, Zaawansowanych protokołów szeregowych, Wyświetlacza LCD, Kart SD, Interfejsu SPI, Portu szeregowego na dowolnym wyprowadzeniu, Specjalistycznych urządzeń zewnętrznych. 24

Biblioteka EPROM #include <EEPROM.h> void setup() Serial.begin(9600); int a=0; int v; int poprzednie=0; v=eeprom.read(a); if (poprzednie!=v) Serial.println(v); poprzednie=v; void serialevent() if (Serial.available()>0) int k=serial.parseint(); EEPROM.write(a,k); 25