Uploaded by Danijela Milicic

sviKursevi 4

advertisement
Садржај
01 Шта је Ардуино ...............................................................................................................................3
02 Треперећи LED ................................................................................................................................5
03 Тастер и испис стања на екрану .....................................................................................................6
04 Зујалица (Buzzer) .............................................................................................................................7
05 Ултра–звучни сензор.......................................................................................................................8
06 Ултра–звучни сензор и бузер (зујалица) .....................................................................................10
07 ЛЕД диода и тастер .......................................................................................................................11
08 Потенциометар ..............................................................................................................................12
09 Потенциометар и ЛЕД диода .......................................................................................................13
10 Звучни сензор и ЛЕД диода .........................................................................................................15
11 FOR loop (петља) са 6 ЛЕД диода................................................................................................16
12 Фото–отпорник (Photo resistor) ....................................................................................................17
13 Детектор покрета (PIR) и ЛЕД .....................................................................................................18
14 Ласер – предајник ..........................................................................................................................19
15 Ласерски пријемник и предајник .................................................................................................20
16 Тач (touch) сензор и ЛЕД диода ...................................................................................................21
17 Tastatura ..........................................................................................................................................22
18 Релеј ................................................................................................................................................23
19 Сензор за температуру и влажност ..............................................................................................24
20 Сензор за кишу ..............................................................................................................................25
21 7 сегментни дисплеј ......................................................................................................................26
22 LCD дисплеј ...................................................................................................................................29
23 LCD Дисплеј и сензор за температуру и влажност ....................................................................30
24 Bluetooth .........................................................................................................................................31
25 Џојстик ...........................................................................................................................................32
26 Инфра–црвени (IR) сензор ...........................................................................................................33
27 Switch Statement ‘a–e’ пале ЛЕД, бројеви 1–5 гасе одговарајућу, ‘s’ гаси све ......................35
28 Fingerprint reader ............................................................................................................................37
29 RFID ................................................................................................................................................38
30 LED Matrix .....................................................................................................................................40
31 DC motor .........................................................................................................................................42
32 Steper motor ....................................................................................................................................43
33 Servo motor .....................................................................................................................................44
34 Servo motor i sensor za kišu ...........................................................................................................45
35 UV sensor i DC motor .....................................................................................................................46
36 Bluetooth i servo motor ...................................................................................................................47
37 Automatska ruka i džojstik ..............................................................................................................48
38 Повезивање два Ардуина..............................................................................................................49
01 Шта је Ардуино
Пинови (5V, 3.3V, GND, Analog, Digital, PWM)
Пинови на Ардуину су места где се жице (каблови) прикључују на Ардуино плочу, када се
конструишу електрична кола. Они обично имају црне пластичне “главе” у које је могуће убости
каблове директно у Ардуино плочу. Ардуино има више врста пинова, при чему су сви означени на
Ардуино плочи и имају различите функције.
GND (3): Скраћени назив ‘Ground’. Постоји неколико GND пинова на Ардуино плочи , сваки од њих
се може користити као минус (-) за струјни коло које се конструише.
5V (4) & 3.3V (5): Су пинови који нам дају напон од 5V (пинови означени са 5V), и 3.3V (пинови
означени са 3.3V). Већина сензора и других компоненти које се употребљвају на Ардуину користе
раде на 5 или 3.3 волта.
Analog (6): Поред ознаке ‘Analog In’ (A0 до A5) се налазе аналогни пинови. Ови пинови могу да
очитавају сигнал са аналогних сензора (као што је сенсор за температуру) и да те вредности
конвертује у дигиталне вредности са којима се даље може врштити обрада у Ардуину.
Dиgиtal (7): Поред аналогних пинова постоје и дигитални пинови (0 до 13). Ови пинови се могу
користити како за очитавање дигиталних вредности на улазу (нпр. да ли је притиснут тастер) тако и
за дигитални излаз (нпр укључивање ЛЕД диоде).
PWM (8): поред дигиталних пинова (3, 5, 6, 9, 10 и 11) стоји знак (~). Ови пинови су нормални
дигитални пинови али се могу користити и за нешто што се зове Pulse-Width Modulation (PWM).
Ардуино програмски код
void setup() {
// Овде се смешта параметри за „setup“ код који се извршава само једном
}
void loop() {
// Овде се смешта главни код који се стално извршава
}
Aрдуино табла „Breadboard“, полови ЛЕД диода и означавање отпорника
Ардуино развојно окружење – едитор за писање кода (програма)
02 Треперећи LED







Ардуино УНО
Breadboard
Каблови
USB кабел
ЛЕД диода (5mm)
Прекидач
220 Ohm отпорник
Ардуино код – треперећи ЛЕД
//Ардуино код за ЛЕД диоду
int led = 13;
int kasnjenje = 1000; //у милисекундама, 1000ms = 1s
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(kasnjenje);
digitalWrite(led, LOW);
delay(kasnjenje);
}
03 Тастер и испис стања на екрану





Ардуино
Тастер
10k ohm отпорник
Каблови
Breadboard
Ардуино код – тастер
//Ардуино код за тастер са исписом на екран вредности тастера
int tasterPin = 2;
// setup део – извршава се само први пут
void setup() {
Serial.begin(9600);
pinMode(tasterPin, INPUT);
}
void loop() {
int stanjeTastera = digitalRead(tasterPin);
Serial.println(stanjeTastera);
delay(1);
// кашњење између два очитавања стања тастера
}
0x Зујалица (Buzzer)



Arduino uno
Breadboard
Buzzer KY-006
Ардуино код – бузер
int buzzer = 8; // Дефинисање пина у који ће се повезати бузер
void setup() {
pinMode(buzzer, OUTPUT); // Дефинисање пина 8 као излазног
}
void loop() {
//креирање звука
for (int i = 0; i < 80; i++) {
digitalWrite(buzzer, HIGH); // шаље HIGH сигнал на бузер
delay(1); // касни 1ms
digitalWrite(buzzer, LOW); // шаље LOW сигнал на бузер
delay(1);
}
delay(50);
//креирање новог тона
for (int j = 0; j < 100; j++) {
digitalWrite(buzzer, HIGH);
delay(2); // касни 2ms
digitalWrite(buzzer, LOW);
delay(2);
}
delay(100);
}
0x Ултра–звучни сензор




VCC
Trig (INPUT)
Echo (OUTPUT)
GND
5V
Pin 11
Pin 12
GND
Ардуино код – ултразвучни сензор
/* Коплетно упутсво за Ultrasonic Sensor HC-SR04 */
int trigPin = 11; //Дефинисање пина за Тригер - одашиљач
int echoPin = 12; // Дефинисање пина за Ехо - пријемник
long duration, cm;
void setup() {
//Почетак Serial Port
Serial.begin (9600);
//Дефинисање улаза и излаза
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// Тригер се прво поставља на LOW да би се осигурало да нема шумова пре пуштања HIGH
сигнала:
// Сензор пушта HIGH сигнал 10 микро секунди.
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Ехо пин хвата повратни HIGH сигнал који је претходно послао тригер
// Мери се време у микросекундама од времена слања (тригер) до времена пријема сигнала (ехо)
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH); //време које је протекло од слања до пријема сигнала
// Конвертовање времена у раздаљину врши се по формули: (duration/2) / 29.1
cm = (duration/2) / 29.1; // време се дели са 29.1 или множи са 0.0343
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(250);
}
0x Ултра–звучни сензор и бузер (зујалица)




Ардуино
Ултразвучни сензор
Каблови
Бузер
Ардуино код – бузер
// Када се неки објекат приближи ултразвучном сензору ближе од 0.5м оглашава се бузер
// Дефинисање пина за ултразвучни сензор и бузер
int const trigPin = 10;
int const echoPin = 9;
int const buzzPin = 2;
void setup() {
pinMode(trigPin, OUTPUT); // Триг пин се дефинише као излазни
pinMode(echoPin, INPUT); // Ехо пин се дефинише као улазни
pinMode(buzzPin, OUTPUT); // Бузер пин се дефинише као излазни
}
void loop() {
// Декларисање променљивих за трајање сигнала и раздаљину
int duration, distance;
digitalWrite(trigPin, HIGH); // Излазни пулс траје 1ms
delay(1);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// Мери се време протекло од слања до пријема
// Раздаљина се одређује као као пола времена трајања сигнала подељено са 29.1
distance = (duration/2) / 29.1;
// Ако је раздаљина већа од 0m и мања од 0.5m огласиће се бузер
if (distance <= 50 && distance >= 0) {
digitalWrite(buzzPin, HIGH); //Бузер укључен
}
else {
digitalWrite(buzzPin, LOW); //Бузер искључен
}
delay(60); //чекај 60 ms до следеће провере раздаљине објекта у односу на ултразвук
}
04 ЛЕД диода и тастер








Ардуино
Breadboard
Каблови
USB каблови
ЛЕД диода
Tастер
10k Ohm отпорник
220 Ohm отпорник
Ардуино код – тастер и ЛЕД диода
int ledPin = 13; // изабери пин за ЛЕД диоду
int inPin = 2;
// изабери улазни пин (за тастер)
int val = 0;
// промењива за исчитавање вредности статуса пина
void setup() {
pinMode(ledPin, OUTPUT); // дефинисање ledPin пина као излазног
pinMode(inPin, INPUT);
// дефинисање inPin као улазног
}
void loop(){
val = digitalRead(inPin); // чита улазну вредност
if (val == HIGH) { // провера да ли је вредност на улазу HIGH (тастер није притиснут)
digitalWrite(ledPin, LOW); // искључи ЛЕД диоду
} else {
digitalWrite(ledPin, HIGH); // укључи ЛЕД диоду
}
08 Потенциометар



Ардуино
Потенциометар
Каблови - џампери
Ардуино код – потенциометар
/*
Чита аналогни сигнал на пину 0, штампа резултат на серијски монитор.
Прикачити цебтрални пин потенциометра на A0, а спољне пинове на +5V и gnd.
*/
// сетап програмски код извршава се само једном:
void setup(){
{
Serial.begin(9600);
}
// подешава серијску комуникацију на 9600 bit-а по секунди:
// Loop део програма се извршавастално, из круга у круг:
void loop(){
int sensorValue = analogRead(A0); // чита улазну вредност на анлогном pin-у 0:
Serial.println(sensorValue);
// штампање исчитане вредности:
delay(1);
// сачекај 1ms па поново иди на почетак loop-а
}
09 Потенциометар и ЛЕД диода
У овој лекцији се учи како се мења интензитет светлости ЛЕД диоде преко потенциометра.





Табла
Каблови
Отпорник (220Ω)
Лед диода
Потенциометар
Ардуино код – потенциометар и укључивање/искључивање (on/off) ЛЕД диоде
int analogPin = A0;
int ledPin = 9;
int inputValue = 0;
//аналогни улазни сигнал качи се пин A0
//ЛЕД се качи на пин 9
//промењива која чува вредност добијену са потенциометра.
//Инијална вредност се поставља на 0.
void setup(){
pinMode(ledPin, OUTPUT);
}
// ledPin се проглашава као излазни
// Loop део програма се извршавастално, из круга у круг:
void loop(){
inputValue = analogRead(analogPin);
//чита вредност са потенциометра
if(inputValue < 500)
{
digitalWrite(ledPin, LOW); // Искључи ЛЕД
}
else {
digitalWrite(ledPin, HIGH); // Укључи ЛЕД
}
Ардуино код – регулација потенциометром јачине светлости ЛЕД-а
int
int
int
int
analogPin = A0;
ledPin = 9;
inputValue = 0;
outputValue = 0;
// аналогни улазни сигнал качи се пин A0
// ЛЕД се качи на пин 9
// промењива која чува вредност добијену са потенциометра.
// промењива која чува излазну вредност
void setup(){
}
// Loop део програма се извршавастално, из круга у круг:
void loop(){
inputValue = analogRead(analogPin);
// чита вредност са потенциометра
//претварање вредности 0-1023 са потенциометра на пропорционалне вредности од 0 до 255
outputValue = map(inputValue,0,1023,0,255);
analogWrite(ledPin,outputValue);
//Укључи ЛЕД снагом која је између 0-255
}
10 Звучни сензор и ЛЕД диода





Ардуино
1x звучни сензор са микрофоном
1x ЛЕД диода
1x 220 Ohm отпорник
КАблови
Ардуино код – звучни сензор и ЛЕД диода
int ledPin=13;
int sensorPin=7;
boolean val =0;
void setup(){
pinMode(ledPin, OUTPUT);
pinMode(sensorPin, INPUT);
Serial.begin (9600);
}
void loop(){
val =digitalRead(sensorPin);
Serial.println (val);
if (val >= 50) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
//чита вредност са сензора и смешта је у промењиву val
//штампа вредност за val
//Ако је вредност преко неке вредности укључи ЛЕД
11 FOR loop (петља) са 6 ЛЕД диода




Ардуино
Табла
6 х 220 ohm отпорника
6 ЛЕД диода
Ардуино код – FOR петља са 6 ЛЕД диода
/* Демонстрација употребе For Loop Диоде се пале у низу па се гасе обрнутим редом */
int timer = 100;
void setup() {
// Већи број спорије се креће паљење ЛЕД диода и обрнуто.
// употребом for loop петље иницијализује се сваки пин од 2 до 7 као излазни (output):
for (int thisPin = 2; thisPin < 7; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
// петља креће од најмањег пина (2) до највећег (7):
for (int thisPin = 2; thisPin < 7; thisPin++) {
digitalWrite(thisPin, HIGH);
// укључи пин
delay(timer);
digitalWrite(thisPin, LOW);
// искључи пин
}
// петља креће од највећег пина (7) до најмањег (2):
for (int thisPin = 6; thisPin >= 2; thisPin--) {
digitalWrite(thisPin, HIGH);
// укључи пин
delay(timer);
digitalWrite(thisPin, LOW);
// искључи пин
}
}
12 Фото–отпорник (Photo resistor)




Ардуино пин A0 –> пин за фото–отпорник
Ардуино пин 9 –> пин за ЛЕД диоду
Ардуино пин 5V –> +5V
Ардуино пин GND –> GND (-)
Ардуино код – Фото-отпорник и ЛЕД диода
/* Коришћење фото–отпорника за паљење ЛЕД диоде у мраку */
//Константе
const int pResistor = A0; // фото–отпорника се прикључује на пин A0
const int ledPin=9;
// Лед пин се прикључује на пин 9
//Промењиве
int value;
// Узима вредност са фото–отпорника у распону (0-1023)
void setup(){
pinMode(ledPin, OUTPUT);
// Постављање lepPin - 9 пина као излазног
pinMode(pResistor, INPUT);
// Постављање pResistor - A0 пина као улазног (optional)
}
void loop(){
value = analogRead(pResistor);
//чита се вредност са фото–отпорника и додељује value
//уместо "25" може се ставити било која вредност за осетљивост фото–отпорника
if (value > 25){
digitalWrite(ledPin, LOW);
//искључи ЛЕД диоду
}
else{
digitalWrite(ledPin, HIGH); //укључи ЛЕД диоду
}
delay(500); //мало кашњење између два очитавања
}
13 Детектор покрета (PIR) и ЛЕД






Ардуино
1 x ЛЕД диода
1 x 220 Ohm отпорник
2 x jumper wires (male to male)
3 x jumper wires (male to female)
1 x Детектор покрета – PIR (passive motion sensor)
Ардуино код – Детектор покрета и ЛЕД диода
int led = 7;
int pirSensor = 4;
void setup(){
pinMode(pirSensor, INPUT_PULLUP);
pinMode(led, OUTPUT);
Serial.begin(9200);
}
void loop(){
if (digitalRead(pirSensor)) {
//Да ли је сензор посало неку вредност
Serial.println("Sensed Something");
//ако је да испиши на екран
digitalWrite(led, HIGH);
//ако је да укључи ЛЕД диоду
}
else {
//ако је не
digitalWrite(led, LOW);
//искључи ЛЕД диоду
Serial.println("Sensed Nothing");
//напиши поруку
}
delay(500);
}
//провери поново за пола секунде
5 Ласер – предајник
Ардуино шема за KY-008 ласерски модул (предајник). Не гледати директно у извор ласерске
светлости, може оштетити око.



Pin – = GND
Pin (среднји pin) = није повезан
Pin S = +5V
Ардуино код – ласер предајник KY-008
//Ардуино програм за предајник Laser KY-008
int laserPin = 13;
void setup()
{
pinMode (laserPin, OUTPUT);
// Дефинисање пина 13 као излазног (output)
}
void loop() {
digitalWrite (laserPin, HIGH);
delay (1000);
digitalWrite (laserPin, LOW);
delay (500);
}
// Укључи ласер
// остани укључен 1 секунду
// Искључи ласер
// остани искључен пола секунде
15 Ласерски пријемник и предајник
У примеру се демонстрира употреба ласерског предајника и пријемника. Предајник шаље сигнал до
пријемника, а вредност са пријемника се испсује на екрану.
Ардуино код – ласер предајник и ласер пријемник
int pinLaser = 2;
int pinReceiver = 3;
// пин за ласер, излазни сигнал за ласер
// пин за пријемник, улазни сигнал
void setup() {
pinMode(pinLaser, OUTPUT);
// постављање pinLaser пина као излазни (output)
pinMode(pinReceiver, INPUT);
// постављање pinReceiver пина као улазни (input)
digitalWrite(pinLaser, HIGH);
// емитуј ласерски зрак
Serial.begin(9600);
//Успостави серијску конекцију за испис вредности са поријемника
}
void loop() {
int value = digitalRead(pinReceiver);
// пријемник детектује вредности LOW или HIGH
Serial.println(value);
// испиши добијену вредност на екран
delay(1000);
// кечај 1000ms = 1s
}
16 Тач (touch) сензор и ЛЕД диода





Ардуино
Каблови
Capacitive Touch Sensor
ЛЕД диода
680 Ohm отпорник
Ардуино код – тач сензор и ЛЕД диода
// У зависности од јачине притиска на тач сензор пали се или гаси ЛЕД диода.
//пин за ЛЕД
int ledPin=7;
void setup() {
pinMode(ledPin,OUTPUT);
Serial.begin(9600);
}
//пин за ЛЕД постављен као излазни (output)
void loop() {
// чита се улаз на аналогном улазном пину A0 и вредност се исписује на екран.
int tacPritisak = analogRead(A0);
//конверотванје вредности (0 - 1023) добијене са тач уређаја у стварни напон (0 - 5V)
float ocitaniNapon = (5.0 / 1023.0)*tacPritisak;
Serial.print(ocitaniNapon);
Serial.println("Volti");
if (ocitaniNapon >1.5){
//дефинисање вредности напона преко које се укључује ЛЕД
digitalWrite(ledPin,HIGH);
// укључи ЛЕД
} else{
digitalWrite(ledPin,LOW);
// искључи ЛЕД
}
delay(20); //чекај 20ms па се врати на loop
}
17 Tastatura
Тастатура је матрица која се састоји од редова и колона. Сваки тастер је додељен одређеном реду
и колони (слика доле). На тастатури са 12 тастера постоје 4 реда и 3 колоне. Први тастер (1) прави
везу између реда 1 и колоне 1 (R1K1). Тастер 2 ће бити R1K2, 3 R1K3, * R4K1, 9 R3K3 …


Библиотека за тастатуру - http://playground.arduino.cc/Code/Keypad#Download
Тастатура
Ардуино код – тастатура
#include "Keypad.h"
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'#','0','*'}
};
// укључивање библиотеке
// број редова
// број колона
// дефинисање изгледа тастатуре
byte rowPins[ROWS] = {8, 7, 6, 5}; //пинови за редове на тастатури R1=pin8, R2=pin7, R3= pin6, R4= pin5
byte colPins[COLS] = {4, 3, 2};
//пинови за редове на тастатури C1 = pin4, C2 =pin3, C3 =pin2
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); //креирање објекта
void setup() {
Serial.begin(9600);
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY)
Serial.println(key);
}
//функција преузима вредност притиснутог тастера са тастатуре
18 Релеј
На високо–напонској страни релеја један конектор са сијалице повезати на средњи контакт (middle
contact), контакт NO (Normally Open) повезати на лампу. Када на (S) контакт дође сигнал high
сијалица ће се упалити.



Ардуино пин 10 –> релеј пин S
Ардуино GND –> релеј пин –
Ардуино +5V –> релеј пин +
Ардуино код – релеј (on/off)
//Програм укључује и искључује лампу прикачену на релеј
int relay = 10; // Дефинисање пина за контролу релеја, активан – high;
void setup() {
pinMode (relay, OUTPUT); // пин се поставља као излазни – output;
}
void loop() {
digitalWrite (relay, HIGH); // релеј се укључује
delay (1000);
digitalWrite (relay, LOW); // релеј се искључује
delay (1000);
}
19 Сензор за температуру и влажност
Пример показује употребу DHT11 сензора за мерење температуре и влажности коришћењем
библиотеке (Adafruit: library) https://github.com/adafruit/DHT-sensor-library/archive/master.zip




Ардуино
Табла
DHT11 сензор
Каблови
Ардуино код – Photo Resistor Module
#include "DHT.h"
// додавање библиотеке
#define DHTPIN 2
// пин на који се качи сензор
#define DHTTYPE DHT11
// Дефинисање типа
DHT dht(DHTPIN, DHTTYPE);
//Дефинисање објекта са именом DHT
void setup() {
Serial.begin(9600);
Serial.println("DHT testiranje");
dht.begin();
}
void loop() {
// Читање температуре и влажности траје око 250 milisekundi, nа старијим сензорима и до 2s
float h = dht.readHumidity();
//чита влажност и придружује вредност промењивој h
float t = dht.readTemperature(); //чита temperaturu и придружује вредност промењивој t
Serial.print("Vlaznost: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C");
}
// исписује текст: Vlaznost
// исписује вредност за h
// исписује размак (празно)
// исписује текст:Temperatura
// исписује вредност за t
// исписује текст: C
20 Сензор за кишу
Повезивање сензора за ниво воде на Ардуину: Поввезати S пин на било који аналогни пин, повезати
+ и – пин на 5V и GND.




Ардуино
Табла
Сензор за течност
Каблови
Ардуино код – сензор за кишу
void setup()
{
Serial.begin(9600);
//успостављање конекције за испис на екран
}
void loop()
{
}
int nivoTecnosti = analogRead(A0);
//очитава вредност на аналогном пину A0
Serial.println(nivoTecnosti);
// штампа на екран очитани ниво течности
delay(100);
//време између два очитавања
21 7 сегментни дисплеј
У овој вежби на 7–сегментном дисплеју, на сваку секунду, се исписују бројеви од 9 до 0 и обрнуто.




Ардуино
7 сегментни дисплеј
2 x 220 Ohm отпорник
Каблови
Ардуино код – 7 сегментни дисплеј
#define segA
#define segB
#define segC
#define segD
#define segE
#define segF
#define segG
int brojac =
2
3
4
5
6
7
8
0;
void setup()
{
//
//
//
//
//
//
//
//
for (int i=2;i<9;i++) {
pinMode(i, OUTPUT);
повезивање
повезивање
повезивање
повезивање
повезивање
повезивање
повезивање
бројач 0-9
сегмента A на
сегмента B на
сегмента C на
сегмента D на
сегмента E на
сегмента F на
сегмента G на
чија вредност
пин 2
пин 3
пин 4
пин 5
пин 6
пин 7
пин 8
се повећава од 0 до 9
// за свако i где i почиње од 2 и i је мање од 9, повећај i за 1
// дефинише све пинове од 2 до каи излазне
}
}
void loop() {
switch (brojac) {
case 0:
// када промењива „brojac„ има вредност 0
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
break;
case 1:
// када промењива „brojac„ има вредност 1
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
case 2:
// када промењива „brojac„ има вредност 2
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
break;
case 3:
// када промењива „brojac„ има вредност 3
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
break;
case 4:
// када промењива „brojac„ има вредност 4
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 5:
// када промењива „brojac„ има вредност 5
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 6:
// када промењива „brojac„ има вредност 6
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 7:
// када промењива „brojac„ има вредност 7
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
case 8:
// када промењива „brojac„ има вредност 8
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 9:
// када промењива „brojac„ има вредност 9
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
}
if (brojac<10) {
brojac++;
// повећај вредност за промењиву ’brojac’ за 1
delay(1000);
// сачекај 1 секунду па иди на почетак
}
if (brojac==10) {
// провери да ли је вредност промењиве једнака 10
brojac=0;
delay(1000);
}
}
// сачекај 1 секунду па иди на почетак
22 LCD дисплеј
У овом примеру на lcd дисплеју ће бити исписан текст ‘Hello World!’




Ардуино
10K Потенциометар
LCD модул
Каблови
Ардуино код – LCD дисплеј
#include <LiquidCrystal.h>
// укључивање библиотеке за LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//Креира LCD објекте (rs, enable, d4, d5, d6, d7)
void setup() {
lcd.begin(16, 2);
// дефинисање броја редова и колона на LCD-у:
lcd.clear();
// Бриши LCD екран
}
void loop() {
lcd.print(" Hello world!");
lcd.setCursor(0, 1);
lcd.print(" LCD Tutorial");
}
// Пиши поруку "Hello world!" на LCD-у.
// постави курсор на колону 0 и ред 1
// Штампај поруку „LCD Tutorial“ на LCD-у.
23 LCD Дисплеј и сензор за температуру и влажност
Приказује температуру (у целзијусима) и релативни влажност ваздуха (у %) примњену са сензора
DHT11 на дисплеју 16X2 LCD.



DHT11 сензор
Каблови
Дисплеј 16X2 LCD
Ардуино код – дисплеј и сензор за температуру и влажност
#include <LiquidCrystal.h>
// додавање библиотеке за LCD
#include <dht.h>
// додавање библиотеке за DHT
dht_dpin = A0
dht DHT;
//креирање објекта DHT
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//креирање објекта lcd
void setup() {
lcd.begin(16, 2);
}
void loop()
{
DHT.read11(dht_dpin);
//чита вредност са dht-а
lcd.clear();
// брише дисплеј
lcd.setCursor(0, 0);
// поставља курсор на 0 ред и 0 колону
lcd.print(" TEMP
: ");
// штампа TEMP
lcd.print((int)DHT.temperature); // штампа вредност за температуру са dht-а
lcd.write((uint8_t)0);
lcd.print("C");
// штампа С
lcd.setCursor(0, 1);
// поставља курсор у други ред
lcd.print(" HUMIDITY: ");
// исписује HUMIDITY
lcd.print((int)DHT.humidity);
// штампа вредност за влажност ваздуха са dht-а
lcd.print(" %");
// исписује %
delay(1000);
//након 1s очитај и прикажи нови вредност за температуру у влажност
}
24 Bluetooth
Прогм омогућава контролу ЛЕД диоде на пину 13 коришћењем команди преко bluetooth модула.




RX (Pin 0) ———> TX
TX (Pin 1) ———> RX
5V ———> VCC
GND ———> GND
Упарити HC 05/06 уносом дифолтног пасворда 1234
Инсталирати LED апликацију на андроид телефон
Притиснути дугме ON да би се укључила ЛЕД диода или OFF дугме да се искључи
Приликом слања кода (upload) са рачунара на Ардуино процесор, TX и RX пинови морају бити
откачени. Када се заврши пренос кода на ардуино процесор вратити пинове TX и RX.
Ардуино код – дисплеј и сензор
char data = 0;
//промењива за чување податка примљеног са bluetooth-а
void setup(){
Serial.begin(9600);
pinMode(13, OUTPUT);
}
//постављање брзине комуникације са bluetooth-ом
//дефинисање дигиталног пина 13 као излазног
void loop() {
if(Serial.available() > 0) //провера да ли је стигао неки података са bluetooth–а
{
data = Serial.read(); //чита долазни податак и смешта га у промењиву data
Serial.print(data);
//Штампа вредност за data на монитор
Serial.print("\n");
//нови ред
if(data == '1')
//проверава да ли је вредност data једнако 1
digitalWrite(13, HIGH); //ако је вредност data 1 онда упали ЛЕД
else if(data == '0')
//проверава да ли је вредност data једнако 0
digitalWrite(13, LOW);
//ако је вредност data 0 онда угаси ЛЕД
}
}
25 Џојстик
Џојстик заправо представља групу потенциометара који шаљу неку аналогну вредност. Када је
џојстик у неутралном положају (на средини), он шаље вредност 512. Распон вредности креће се од
0 до 1024.
Ардуино код – џојстик
const int SW_pin = 2;
const int X_pin = 0;
const int Y_pin = 1;
// дигитални пин повезан на switch излаз
// аналогни пин повезан на X излаз
// аналогни пин повезан на Y излаз
void setup() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
Serial.begin(9600);
// SW_pin пин се дефинише као излазни
// укључи SW_pin пин (пошаљи напон)
}
void loop() {
Serial.print("Switch: ");
Serial.print(digitalRead(SW_pin));
Serial.print("\n");
Serial.print("X-osa: ");
Serial.print(analogRead(X_pin));
Serial.print("\n");
Serial.print("Y-axis: ");
Serial.println(analogRead(Y_pin));
Serial.print("\n\n");
delay(1000);
}
//испиши реч Switch:
//очитај вредност са SW_pin-а и испиши је на екран
//нови ред
//испиши реч X-osa:
//очитај вредност са X_pin-а и испиши је на екран
//нови ред
//испиши реч Y-osa:
//очитај вредност са Y_pin-а и испиши је на екран
//два нова реда
//сачекај 1s пре новог очитавања положаја џојстика
26 Инфра–црвени (IR) сензор
Инфра–црвени предајник
Инфра–црвена диода (IR LED) је послебна ЛЕД диода која емитује инфра–црвене зраке од таласне дужине од
700 nm до 1 mm wavelength. Различите IR LED производе зраке различитих таласних дужина. IR LEDs are usually
made of gallium arsenide or aluminum gallium arsenide.
Људксо око не може да детектује инфра–црвене зраке, па није могуће уочити да ли је IR LED диода укључена
или не. Овај проблем се решава помоћу камере на мобилном телефону, пошто се овом камером види када је
IR LED диода укључена. IR емитујуће LED диоде (предајници) се најчешће користе у ТВ даљинском.
У овом примеру користиће се и предајник и пријемник инфра–црвених зрака.
Потребно је уперити оба уређаја (пријемник и предајник) један у други и очитавати вредности на 'serial
monitor'–у.
Предајник KY-005IR
Пријемник KY-022



Пин – = GND
Средњи пин = +5V
Пин S = Пин 3 на Ардуино
Ардуино код – Инфрацрвени предајник KY-005
//програм користи IR remote библиотеку, адреса: http://z3t0.github.io/Arduino-IRremote/
#include <IRremote.h>IRsend irsend;
void setup(){
Serial.begin(9600);
}
void loop() {
for (int i = 0; i < 50; i++) { //за свако 'i' почев од 0 до 49 повећај 'i' за 1
irsend.sendSony(0xa90, 12);
// Sony TV power код
delay(40);
}
}
Инфра–црвени пријемник



Модул пин (-) –> GND
Модул + средњи пин –> +5V
Модул S –> дигитални пин 11
Ардуино код – Инфрацрвени пријемник KY-022
// Демонстрација пријема IR кода са Irrecv
#include <IRremote.h>
int RECV_PIN = 11;
//дефинисање пина за пријемник
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){
Serial.begin(9600);
irrecv.enableIRIn();
//стартуј пријемник
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume();
}
}
// Прими следећу вредност
27 Switch Statement ‘a–e’ пале ЛЕД, бројеви 1–5 гасе
одговарајућу, ‘s’ гаси све
Демонстрација 'switch statement'-а. Коришћењем 'serial monitor'-а шаљу се одговарајући карактери
који управљају паљењем/гашењем ЛЕД диода. Карактери 'a', 'b', 'c', 'd', и 'e' пале ЛЕД диоду. Бројеви
од 1 до 5 гасе одговарајућу ЛЕД диду. 1 гаси прву, 2 гаси другу ... Слањем 's' карактера гасе се све
ЛЕД диоде.




Ардуино
5 х 220 Ohm отпорника
5 х ЛЕД диода
Каблови
Ардуино код – Switch Statement – Serial.read()
void setup() {
Serial.begin(9600);
//иницира серијску комуникацију
for (int thisPin = 2; thisPin < 7; thisPin++) {
//иницијализује ЛЕД пинове од 2 до 6
pinMode(thisPin, OUTPUT);
}
}
void loop() {
if (Serial.available() > 0) {
int inByte = Serial.read();
switch (inByte) {
case 'a':
digitalWrite(2, HIGH);
// проверава да ли је нешто стигло преко конзоле
// чита вредности које су пристигле
// ако је стигло ’a’ укључи ЛЕД диоду на пину 2
break;
case '1':
digitalWrite(2, LOW);
// ако је стигло ’1’ искључи ЛЕД диоду на пину 2
break;
case 'b':
digitalWrite(3, HIGH);
// ако је стигло ’b’ укључи ЛЕД диоду на пину 3
break;
case '2':
digitalWrite(3, LOW);
// ако је стигло ’2’ искључи ЛЕД диоду на пину 3
break;
case 'c':
digitalWrite(4, HIGH);
// ако је стигло ’c’ укључи ЛЕД диоду на пину 4
break;
case '3':
digitalWrite(4, LOW);
// ако је стигло ’3’ искључи ЛЕД диоду на пину 4
break;
case 'd':
digitalWrite(5, HIGH);
// ако је стигло ’d’ укључи ЛЕД диоду на пину 5
break;
case '4':
digitalWrite(5, LOW);
// ако је стигло ’4’ искључи ЛЕД диоду на пину 5
break;
case 'e':
digitalWrite(6, HIGH);
// ако је стигло ’e’ укључи ЛЕД диоду на пину 6
break;
case '5':
digitalWrite(6, LOW);
// ако је стигло ’5’ искључи ЛЕД диоду на пину 6
break;
case 's':
// ако је стигло ’s’ искључи ЛЕД на пиновима од 2 до 6
for (int thisPin = 2; thisPin < 7; thisPin++) {
//за сваки пин, почев од 2 до 6 повећај за 1
digitalWrite(thisPin, LOW);
}
break;
}
}
}
28 Fingerprint reader
29 RFID
RFID – Radio Frequency Identification. У овом примеру очитава се таг и уколико је дозвољен, укључиће
се ЛЕД диода. Пре овог експеримента потребно је путем 'Serial Monitor'–а очитати број картице, то
је поље: CARD UID: 34 22 EC E2






1 x Arduino Uno board
1 x RFID reader with tags
1 x Breadboard
2 x LEDs (preferably one red and one green)
2 x 200Ω resistors
Jumper wires
Ардуино код – RFID и две ЛЕД диоде
// MFRC522:
http://downloads.arduino.cc/libraries/github.com/miguelbalboa/MFRC522-1.4.5.zip
// SPI библиотека:
https://github.com/PaulStoffregen/SPI/archive/master.zip
#include <SPI.h> // увлачење SPI библиотеке
#include <MFRC522.h> // увлачење RFID библиотеке
#define SS_PIN 10 // дефинисање пина за SDA на модулу
#define RST_PIN 9 // Дефинисање ресет пина
#define ledPin 2
// Дефинисање ЛЕД пина
MFRC522 mfrc522(SS_PIN, RST_PIN);
// Стартовање инстанце MFRC522
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode (ledPin, OUTPUT);
}
// Дефинисањеr der ledPin–а као Output
void loop() {
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return; // иди даље
}
if ( ! mfrc522.PICC_ReadCardSerial())
return; // иди даље
}
{
Serial.print("Broj UID za karticu je:");
String rfid = "";
// Тражи (чека) нову картицу
// чита RFID UID
// испис на монитору
for (byte i = 0; i < mfrc522.uid.size; i++) {
rfid += mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ";
rfid += String(mfrc522.uid.uidByte[i], HEX);
}
rfid.trim();
// уклања размаке пре и после UID -а
rfid.toUpperCase();
// испис UID само са великим словима
{
Serial.print(rfid);
// приказује UID RFID-а на монитору
Serial.println();
// нови ред
}
if (rfid == "34 22 EC E2") {
digitalWrite (ledPin, HIGH);
delay (5000);
digitalWrite (ledPin, LOW);
}
}
// Да ли је UID једнак са "34 22 EC E2"
// ако је да, укључи ЛЕД диоду
// сачекај 5 секунди
// искључи ЛЕД диоду
30 LED Matrix
CLOCK I LED
// DS1302_Serial_Easy (C)2010 Henning Karlsen
// web: http://www.henningkarlsen.com/electronics
//
// A quick demo of how to use my DS1302-library to
// quickly send time and date information over a serial link
//
// I assume you know how to connect the DS1302.
// DS1302: RST pin -> Arduino Digital 2
//
DAT pin -> Arduino Digital 3
//
CLK pin -> Arduino Digital 4
#include <DS1302.h>
// Init the DS1302
DS1302 rtc(2, 3, 4);
int led = 13;
Time t;
void setup()
{
pinMode(led, OUTPUT);
// Set the clock to run-mode, and disable the write protection
rtc.halt(false);
rtc.writeProtect(false);
// Setup Serial connection
Serial.begin(9600);
// The following lines can be commented out to use the values already stored in the DS1302
rtc.setDOW(THURSDAY);
// Set Day-of-Week to FRIDAY
rtc.setTime(23, 42, 45); // Set the time to 12:00:00 (24hr format)
rtc.setDate(8, 1, 2019); // Set the date to August 6th, 2010
}
void loop()
{
t = rtc.getTime();
// Send Day-of-Week
Serial.print(rtc.getDOWStr());
Serial.print(" ");
Serial.print(" ----");
Serial.print(t.min);
Serial.print(" ");
// Send date
Serial.print(rtc.getDateStr());
Serial.print(" -- ");
// Send time
Serial.println(rtc.getTimeStr());
// Wait one second before repeating :)
delay (1000);
if (t.min == 43 and t.sec == 15)
{
digitalWrite(led, HIGH);
}
if (t.min == 44 and t.sec == 05)
{
digitalWrite(led, LOW);
}
}
31 DC motor
32 Steper motor
33 Servo motor
34 Servo motor i sensor za kišu
35 UV sensor i DC motor
36 Bluetooth i servo motor
37 Automatska ruka i džojstik
38 Повезивање два Ардуина
Два Ардуина могу да комуницирају један са другим путем 'Master Writer/Slave Receiver'
конфигурације путем 'I2C synchronous' серијског протоколаl. За те потребе у овом примеру се
користи пар функционалности Ардуино–ве 'Wire' библиотеке. Ардуино 1, Мастер, је програмиран
да шаље 6 bytes података сваких пола секунде ка Slave–овима који имају јединствене адресе. Једном
када је порука примљена, након тога она се може видети на Slave–овом 'serial monitor–у.
I2C протокол захтева коришћење две линије, једна за пријем а друга за слање података.
Отпочињање комуникације Мастер врши функцијом из библиотеке Wire.begin(). Пре слања поруке
до Slave–а
потребно је успоставити канал за трансмисију, што се постиже командом
Wire.beginTransmission(n) – где је ’n’ број Slave–а са којим се остварује трансмисија, док се само
слање спроводи функцијом Wire.write(х), где је 'х' вредност која се шаље Slave–у. Завршетак
трансмисије се остварује командом Wire.endTransmission().
Ардуино – код за Master
// I2C Master укључује 'Wire' библиотеку за I2C
#include <Wire.h>
int x = 0;
int sensorPin = A0;
int sensorValue = 0;
void setup() {
Wire.begin();
Serial.begin(9600);
}
// Старт I2C Bus као Master
void loop() {
sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
Wire.beginTransmission(9);
Wire.write(sensorValue);
delay(1000);
Wire.endTransmission();
}
// Трансисија до уређаја #9
// Стоп трансмисије
Ардуино – код за Slave
// I2C Slave укључује 'Wire' библиотеку за I2C
#include <Wire.h>
int LED = 11;
int x = 0;
void setup() {
pinMode (LED, OUTPUT);
Wire.begin(9);
Wire.onReceive(receiveEvent);
Serial.begin(9600);
}
//
//
//
//
void receiveEvent(int bytes) {
x = Wire.read();
}
//Читај карактере са I2C
void loop() {
int ledPWM = map(x, 0, 255, 0, 1023);
analogWrite(LED, ledPWM);
Serial.print("X is: ");
Serial.println(x);
Serial.print("PWM is: ");
Serial.println(ledPWM);
delay(1000);
}
Дефинисање LED пина као излазног – Output
Старт I2C Bus као Slave на адреси 9
Проверавај да ли је нешто стигло од Мастера.
Отвори 'Serial communication'за пренос података
//мапирај вредност потенциометра у промењиву ledPWM
// Укључи ЛЕД у складу са вредношћу ledPWM
Download