This e-book has been prepared as a project collaborative product that includes the work of “mixed school teams”.
We made “arduino” studies as a project study. We used “tinkercad”, one of the web 2.0 tools, in the studies.
Three “mixed school teams” were created.
We created a “guidebook” from the coding practices made by these mixed school teams.
Team 1
Consultant Teachers:Oya Arslan/Pınar Emir/Angelina Cvetanoska
Students: Matea-Can-İlker-Edanur-Zeynep D.-Hilal-Janette
Team 2
Consultant Teachers: Seçil Uçum/Yasin Bal/Raul Lara
Students: Izan-Ersel-Özgür-Bennu-Selen-Mustafa
Team 3
Consultant Teachers: Aytül Bal/Medine Yarımkale/Beste Soypak
Students: Timotea-Dinçer-Edanur-Zeynep I.-Zeynep-Onur- Gökmen
Contents
Team 1
Two Leds Sequentially ………………………………………. 3
Thermostat ……………………………………………………….. 5
Led Lighting with Button ……………………………………. 7
Team-2
Led Lighting with Potentiometer ……………………….. 9
Digital Clock ……………………………………………………… 11
Parking Sensor …………………………………………………. 13
Team-3
Calculator ……………………………………………………….. 15
Numerator ………………………………………………………. 17
Signaling System ……………………………………………… 19
Circuit of LCD Screen ………………………………………… 21
TEAM-1
Lighting Two Leds in Sequence
A List of Materials
1 Arduino Uno R3
1 Red Led
1 Blue Led
2 Resistors (220 Ω)
Codes
int ledk=8;
int ledm=9;
void setup()
{
pinMode(ledk, OUTPUT);
pinMode(ledm, OUTPUT);
}
void loop()
{
digitalWrite(ledk, HIGH);
digitalWrite(ledm, LOW);
delay(2000);
digitalWrite(ledk, LOW);
digitalWrite(ledm, HIGH);
delay(2000);
}
Explanation
In our project, it is aimed that 2 leds light up in sequence.
Since the two LEDs will be flashed in sequence, 2 LEDs are taken. One of the LEDs is “red” and the other is “blue”. Two resistors are taken for two leds. Resistors are set to 220 Ω. The long leg of the red led is connected to digital pin 8, the long leg of the blue led is connected to digital pin 9. The short legs of the two leds are also connected to the grounding line. From here it is connected to the GND line on the board. Thus, the circuit is completed.
For coding; text encoding opens. It is coded that the red led is connected to 8 and the blue led to 9. In the “void loop” section, the coding that will create an infinite loop is written. The command “Turn on the red led, turn off the blue led and do this for 2 seconds” is coded. Then the command “Turn on the blue led, turn off the red led and do this for 2 seconds” is coded. Thus, while one turns on, the other goes out, and this cycle continues.
TEAM-1
Thermostat
Codes
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
pinMode(A0, INPUT);
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop()
{
Serial.println(-40 + 0.488155 *(analogRead(A0) – 20));
lcd.setCursor(0, 1);
lcd.print(-40 + 0.488155 *(analogRead(A0) – 20));
}
TEAM-1
Led Lighting with Button
Codes
// C++ code
//
void setup()
{
pinMode(12, INPUT);
pinMode(13, OUTPUT);
}
void loop()
{
if (digitalRead(12) == 1) {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
} delay(10); // Delay a little bit to improve simulation performance
}
TEAM-2
Led Lighting with Potentiometer
Codes
// C++ code
//
void setup()
{
pinMode(A5, INPUT);
pinMode(12, OUTPUT);
pinMode(8, OUTPUT);
pinMode(5, OUTPUT);
pinMode(2, OUTPUT);
}
void loop()
{
if (analogRead(A5) < 200) {
digitalWrite(12, HIGH);
digitalWrite(8, LOW);
digitalWrite(5, LOW);
digitalWrite(2, LOW);
}
if (analogRead(A5) > 400) {
digitalWrite(12, HIGH);
digitalWrite(8, HIGH);
digitalWrite(5, LOW);
digitalWrite(2, LOW);
}
if (analogRead(A5) > 600) {
digitalWrite(12, HIGH);
digitalWrite(8, HIGH);
digitalWrite(5, HIGH);
digitalWrite(2, LOW);
}
if (analogRead(A5) > 800) {
digitalWrite(12, HIGH);
digitalWrite(8, HIGH);
digitalWrite(5, HIGH);
digitalWrite(2, HIGH);
}
if (analogRead(A5) < 200) {
digitalWrite(12, LOW);
digitalWrite(8, LOW);
digitalWrite(5, LOW);
digitalWrite(2, LOW);
}
delay(10); // Delay a little bit to improve simulation performance
}
TEAM-2
Digital Clock
Codes
#include <LiquidCrystal.h>
const int rs = 2;
const int en = 3;
const int d4 = 4;
const int d5 = 5;
const int d6 = 6;
const int d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int h = 12;
int m = 0;
int s = 0;
int flag = 0;
int TIME = 0;
const int hs = 0;
const int ms = 1;
int state1 = 0;
int state2 = 0;
void setup()
{
lcd.begin(16, 2);
pinMode(hs, INPUT_PULLUP);
pinMode(ms, INPUT_PULLUP);
}
void loop()
{
lcd.setCursor(0, 0);
s = s + 1;
lcd.print(“TIME:” );
lcd.print(h);
lcd.print(“:”);
lcd.print(m);
lcd.print(“:”);
lcd.print(s);
if (flag < 12) lcd.print(” AM”);
if (flag == 12) lcd.print(” PM”);
if (flag > 12) lcd.print(” PM”);
if (flag == 24) flag = 0;
delay(1000);
lcd.clear();
if (s == 60)
{
s = 0;
m = m + 1;
}
if (m == 60)
{
m = 0;
h = h + 1;
flag = flag + 1;
}
if (h == 13)
{
h = 1;
}
lcd.setCursor(0, 1);
state1 = digitalRead(hs);
if (state1 == 0)
{
h = h + 1;
flag = flag + 1;
if (flag < 12) lcd.print(” AM”);
if (flag == 12) lcd.print(” PM”);
if (flag > 12) lcd.print(” PM”);
if (flag == 24) flag = 0;
if (h == 13) h = 1;
}
state2 = digitalRead(ms);
if (state2 == 0)
{
s = 0;
m = m + 1;
}
}
TEAM-2
Parking Sensor
Codes
int echoPin=6; // Sensörün üzerindeki alıcı(echo) mikrofon pini
int trigPin=7; // Sensörün üzerindeki verici(trig) ses hoparlör pini
int buzzerPin=8; // Engele yaklaştığında öten buzzer pini
float sure,mesafe; //sure ve mesafe değişkenlerini float(kesirli sayı) veri tipinde tanımlıyoruz.
void setup() {
pinMode(trigPin, OUTPUT); // Giriş ve çıkış pinlerini ayarlıyoruz.
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600); //Seri monitörü başlatmak için gerekli parametreyi giriyoruz.
}
void alarm1(){
tone(buzzerPin, 15); // 15 hertzlik sinyal gönderiyoruz.
delay(200); // 200 msde bir
noTone(buzzerPin); // sinyali kapatıyoruz
delay(200);
}
void alarm2(){
tone(buzzerPin, 15); // 15 hertzlik sinyal gönderiyoruz.
delay(100); // 100 msde bir
noTone(buzzerPin); // sinyali kapatıyoruz
delay(100);
}
void alarm3(){
tone(buzzerPin, 15); // 15 hertzlik sinyal gönderiyoruz.
delay(50); // 50 msde bir
}
void loop()
{
digitalWrite(trigPin,LOW);//Trig pinini kapatır.
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);// Sensörün Trig pininden uygulanan sinyal 40 kHz frekansında ultrasonik bir ses yayılmasını sağlar.
delayMicroseconds(5);
digitalWrite(trigPin , LOW);//Trig pinini kapatır.
sure = pulseIn(echoPin, HIGH);//Bu ses dalgası herhangi bir cisme çarpıp sensöre geri döndüğünde, Echo pini aktif hale gelir.
mesafe = (sure / 29.1) /2; //Echo pininden alınan değer yani “süre” değeri işlemden geçiriliyor.
Serial.print(“mesafe = “); // Seri monitöre hesaplanan mesafe değerini yazdırıyoruz.
Serial.print(mesafe);
Serial.println(“cm”);
if (mesafe > 100 && mesafe <300 ){
alarm1(); // Eğer ses 100 cm den büyük ve 300 cm den küçükse alarm1 fonksiyonunu çalıştırır.
}
else if (mesafe > 25 && mesafe <=100 ){
alarm2(); // Eğer ses 25 cm den büyük ve 100 cm den küçük veya eşitse alarm2 fonksiyonunu çalıştırır.
}
else if(mesafe > 0 && mesafe <=25){
alarm3();// Eğer ses 0 cm den büyük ve 25 cm den küçük veya eşitse alarm3 fonksiyonunu çalıştırır.
}
delay(300);
}
TEAM-3
Calculator
Codes
#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
long first = 0;
long second = 0;
double total = 0;
char customKey;
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{‘1′,’2′,’3′,’+’},
{‘4′,’5′,’6′,’-‘},
{‘7′,’8′,’9′,’*’},
{‘C’,’0′,’=’,’/’}
};
byte rowPins[ROWS] = {7,6,5,4}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {3,2,1,0}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup()
{
lcd.begin(16, 2); // start lcd
for(int i=0;i<=3;i++);
lcd.setCursor(0,0);
lcd.print(“by”);
lcd.setCursor(0,1);
lcd.print(“arda/aytül”);
delay(4000);
lcd.clear();
lcd.setCursor(0, 0);
}
void loop()
{
customKey = customKeypad.getKey();
switch(customKey)
{
case ‘0’ … ‘9’: // This keeps collecting the first value until a operator is pressed “+-*/”
lcd.setCursor(0,0);
first = first * 10 + (customKey – ‘0’);
lcd.print(first);
break;
case ‘+’:
first = (total != 0 ? total : first);
lcd.setCursor(0,1);
lcd.print(“+”);
second = SecondNumber(); // get the collected the second number
total = first + second;
lcd.setCursor(0,3);
lcd.print(total);
first = 0, second = 0; // reset values back to zero for next use
break;
case ‘-‘:
first = (total != 0 ? total : first);
lcd.setCursor(0,1);
lcd.print(“-“);
second = SecondNumber();
total = first – second;
lcd.setCursor(0,3);
lcd.print(total);
first = 0, second = 0;
break;
case ‘*’:
first = (total != 0 ? total : first);
lcd.setCursor(0,1);
lcd.print(“*”);
second = SecondNumber();
total = first * second;
lcd.setCursor(0,3);
lcd.print(total);
first = 0, second = 0;
break;
case ‘/’:
first = (total != 0 ? total : first);
lcd.setCursor(0,1);
lcd.print(“/”);
second = SecondNumber();
lcd.setCursor(0,3);
second == 0 ? lcd.print(“Invalid”) : total = (float)first / (float)second;
lcd.print(total);
first = 0, second = 0;
break;
case ‘C’:
total = 0;
lcd.clear();
break;
}
}
long SecondNumber()
{
while( 1 )
{
customKey = customKeypad.getKey();
if(customKey >= ‘0’ && customKey <= ‘9’)
{
second = second * 10 + (customKey – ‘0’);
lcd.setCursor(0,2);
lcd.print(second);
}
if(customKey == ‘=’) break; //return second;
}
return second;
}
TEAM-3
Numerator
Codes
int a = 2; //7 segment displayin her bir led elemanını
int b = 3; // daha rahat kodlama yapabilme amacıyla
int c = 4; // bağladğımız kapılara denk gelecek şekilde
int d = 5; // değişken tanımlaması yaptık.
int e = 6;
int f = 7;
int g = 8;
void setup()
{
pinMode(a, OUTPUT); // Pinlerin çıkış pini olduğunu belirtiyoruz.
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
}
void sifir() // Rakamları birer fonksiyon olacak şekilde
{ // tanımladık. Her bir rakam fonksiyonunda
digitalWrite(a,HIGH); // hangi segmentlerin(ledlerin)aktif olacağını
digitalWrite(b,HIGH); // belirttik. Örneğin sifir rakamı için “g”
digitalWrite(c,HIGH); // kapısı hariç diğer ledler açık olacak.
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
delay(1000);
}
void bir()
{
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
delay(1000);
}
void iki()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
delay(1000);
}
void uc()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
delay(1000);
}
void dort()
{
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
delay(1000);
}
void bes()
{
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
delay(1000);
}
void alti()
{
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
delay(1000);
}
void yedi()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
delay(1000);
}
void sekiz()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
delay(1000);
}
void dokuz()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
delay(1000);
}
void loop()
{
sifir();delay(200); // İstediğimiz rakamı görüntülemek için o rakamın
bir();delay(200); // fonksiyonun çağırdık ve uygun bir bekleme süresi
iki();delay(200); // verdik.
uc();delay(200);
dort();delay(200);
bes();delay(200);
alti();delay(200);
yedi();delay(200);
sekiz();delay(200);
dokuz();delay(200);
}
TEAM-3
Signaling System
Codes
#define yayaButonu digitalRead(3)
#define aracKirmizi 4
#define aracSari 5
#define aracYesil 6
#define yayaKirmizi 7
#define yayaYesil 8
bool counter = false;
void setup ()
{
pinMode(yayaButonu,INPUT); //Yaya’ların bastığı buton
pinMode(aracKirmizi,OUTPUT); //kırmızı işık (araçlar için)
pinMode(aracSari,OUTPUT); //sarı işık (araçlar için)
pinMode(aracYesil,OUTPUT); //yeşil işık (araçlar için)
pinMode(yayaKirmizi,OUTPUT); //kırmızı işık (yayalar için)
pinMode(yayaYesil,OUTPUT); //yeşil işık (yayalar için)
}
void loop()
{
while(!counter) //counter 30 saniye dolmadan true olmuyor bu sayede en az 30 saniye boyunca yeşil ışık yanıyor.
{
for(int i= 0; i<=5; i++)
{
digitalWrite(aracYesil,HIGH);
digitalWrite(yayaKirmizi,HIGH);
if(i == 5)
{
counter = true;
}
delay(1000);
}
}
//30 saniyedir araçlar için yeşil ışık yanıyor.
//Yayalar butona basmadığı sürece araçlar için yeşil, yayalar için kırmızı ışık yanmaya devam ediyor.
if(yayaButonu)
{
//Yayalar butona bastıktan sonra araçlar için yeşilden kırmızıya geçiş, yayalar için kırmızıdan yeşile geçiş olayı başlıyor.
for(int i= 1; i<=3; i++)
{
//Ödevde istenilen [3.1]’e göre araçlar için yeşil ışık 3 saniye boyunca yanıp sönüyor.
digitalWrite(aracYesil,LOW);
delay(500);
digitalWrite(aracYesil,HIGH);
delay(500);
}
//Ödevde istenilen [3.2]’ye göre yeşil ışık sönüyor ve 1 saniye sonra sarı ışık yanmaya başlıyor.
digitalWrite(aracYesil,LOW);
delay(1000);
digitalWrite(aracSari,HIGH);
delay(3000);
//Ödevde istenilen [3.3]’e göre sarı ışık sönüyor ve 15 saniye boyunca araçlar için kırmızı ışık yanıyor.
//Ödevde istenilen [3.4]’e göre yayalar için de yeşil ışık yanıyor.
digitalWrite(yayaKirmizi,LOW);
digitalWrite(aracSari,LOW);
digitalWrite(aracKirmizi,HIGH);
digitalWrite(yayaYesil,HIGH);
delay(15000);
//Ödevde istenilen [4]’e göre;
for(int i= 1; i<=3; i++)
{
// Yaya yeşil ışığı birer saniye aralıklarla 3 kez sönüp yanar.
digitalWrite(yayaYesil,LOW);
delay(500);
digitalWrite(yayaYesil,HIGH);
delay(500);
}
//Yaya yeşil ışığı söner ve 1 saniye sonra yaya kırmızı ışığı yanar.
digitalWrite(yayaYesil,LOW);
delay(1000);
digitalWrite(yayaKirmizi,HIGH);
delay(5000);
//Yaya kırmızı ışığından 5 saniye sonra (2 saniye boyunca) araç sarı ışığı yanar.
digitalWrite(aracSari,HIGH);
delay(2000);
//Araç kırmızı ışığı ve araç sarı ışığı söner ve araç yeşil ışığı yanar.
digitalWrite(aracSari,LOW);
digitalWrite(aracKirmizi,LOW);
counter = false;
}
}
TEAM-3
Circuit of LCD Screen
Codes
/*
LiquidCrystal Library – Hello World
Demonstrates the use a 16×2 LCD display. The LiquidCrystal library works with all LCD displays that are compatible with the Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by the 16-pin interface.
This sketch prints “ARDUINO” to the LCD and shows the time.
The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* LCD VSS pin to ground
* LCD VCC pin to 5V
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
Library originally added 18 Apr 2008
by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe modified 22 Nov 2010
by Tom Igoe
This example code is in the public domain. http://www.arduino.cc/en/Tutorial/LiquidCrystal
*/
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD’s number of columns and rows: lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print(“FENERBAHCE”);
}
void loop(){
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis() / 1000);
// delay a bit
delay(50);
}
Published: Apr 15, 2022
Latest Revision: Apr 15, 2022
Ourboox Unique Identifier: OB-1313033
Copyright © 2022