VIETNAM NATIONAL UNIVERSITY – HOCHIMINH CITY
INTERNATIONAL UNIVERSITY SCHOOL OF COMPUTER
SCIENCE & ENGINEERING
Internet of Things Laboratory
Lab 1 - Introduction to Arduino
Submitted by
Group Name: Zero
No ID Name No Contribution
1 ITITIU19076 Đặng Nguyễn Nam Anh
2 ITITIU18239 Lê Hoàng Phú Thành
3 ITITIU18260 Lý Hoàng Vũ
4 ITITIU18202 Lý Tiểu Dũng
5 ITITIU19033 Vũ Hoàng Nam
6 ITITIU19059 Trương Công Trung
Date Submitted: 6th March 2023
Course Instructor: Le Duy Tan
1. Activity 1:
A) Blinking Led in 200ms
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
B) Blinking Led in 5s
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(5000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(5000); // wait for a second
2. Activity 2
A) Police Chaser Lights (flashes the middle red and blue LED and the
LED directly to the left of each color)
void setup() {
// RED LED's < >BLUE LED's
// initialize digital pin 13, 12, 11, 10, 9, 8 as an output.
pinMode(13, OUTPUT); //Left Red
pinMode(12, OUTPUT); //Middle Red
pinMode(11, OUTPUT); //Right Red
pinMode(10, OUTPUT); //Left Blue
pinMode(9, OUTPUT); //Middle Blue
pinMode(8, OUTPUT); //Right Blue
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
delay(100);
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
delay(100);
/////LED Alternate sides/////
digitalWrite(10, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
delay(100);
digitalWrite(10, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(100);
B) Police Chaser Lights (flash the middle red and blue LED and the
LED directly to the right of each color, and then flash the middle red and blue
LED as well as the LED directly to the left of each color)
// the setup function runs once when you press reset or power the board
void setup() {
// RED LED's < >BLUE LED's
// initialize digital pin 13, 12, 11, 10, 9, 8 as an output.
pinMode(13, OUTPUT); //Left Red
pinMode(12, OUTPUT); //Middle Red
pinMode(11, OUTPUT); //Right Red
pinMode(10, OUTPUT); //Left Blue
pinMode(9, OUTPUT); //Middle Blue
pinMode(8, OUTPUT); //Right Blue
// the loop function runs over and over again forever
void loop() {
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
delay(100);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(100);
/////LED Alternate sides/////
digitalWrite(12, HIGH);
digitalWrite(9, HIGH);
delay(100);
digitalWrite(12, LOW);
digitalWrite(9, LOW);
delay(100);
//
digitalWrite(13, HIGH);
digitalWrite(8, HIGH);
delay(100);
digitalWrite(13, LOW);
digitalWrite(8, LOW);
delay(100);
C) Police Chaser Lights (free order: 2 leds sequentially turn on from left to
right each time)
// the setup function runs once when you press reset or power the board
void setup() {
// RED LED's < >BLUE LED's
// initialize digital pin 13, 12, 11, 10, 9, 8 as an output.
pinMode(13, OUTPUT); //Left Red
pinMode(12, OUTPUT); //Middle Red
pinMode(11, OUTPUT); //Right Red
pinMode(10, OUTPUT); //Left Blue
pinMode(9, OUTPUT); //Middle Blue
pinMode(8, OUTPUT); //Right Blue
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
delay(100);
digitalWrite(13, LOW);
digitalWrite(12, LOW);
delay(100);
/////LED Alternate sides/////
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
delay(100);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
delay(100);
//
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
delay(100);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
delay(100)
3. Activity 3
A) Arduino Traffic Light Simulator
- Change the flashing order to Red - Yellow - Green
- Increase the delay time of Red and Green lights to 7 seconds
// variables
int GREEN = 2;
int YELLOW = 3;
int RED = 4;
int DELAY_GREEN = 7000;
int DELAY_YELLOW = 2000;
int DELAY_RED = 7000;
// basic functions
void setup()
pinMode(GREEN, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(RED, OUTPUT);
void loop()
red_light();
delay(DELAY_RED);
yellow_light();
delay(DELAY_YELLOW);
green_light();
delay(DELAY_GREEN);
void green_light()
digitalWrite(GREEN, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(RED, LOW);
void yellow_light()
digitalWrite(GREEN, LOW);
digitalWrite(YELLOW, HIGH);
digitalWrite(RED, LOW);
}
void red_light()
digitalWrite(GREEN, LOW);
digitalWrite(YELLOW, LOW);
digitalWrite(RED, HIGH);
4. Activity 4
A) Flash bright (normal)
// Created 8th February 2019 by Neil Doherty
/*
'normal' presentation:
int ledPin3 = 3; // Usual assigned designated output pins
int ledPin4 = 4;
int ledPin5 = 5;
int ledPin6 = 6;
int ledPin7 = 7;
int ledPin8 = 8;
int ledPin9 = 9;
int ledPin10 = 10;
int ledPin11 = 11;
int ledPin12 = 12;
const int delayperiod = 30;
then we would have:
void setup () {
pinMode(ledPin3, OUTPUT); // Usual pinMode
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
pinMode(ledPin11, OUTPUT);
pinMode(ledPin12, OUTPUT);
*/
// Instead of all that, delete all of the above and use:
// Created 8th February 2019 by Neil Doherty
// instead of making eleven int statements, only two are used.
const int delayPeriod = 70; // uses less memory than int.
/* However, by creating void setup() as an empty statement, we save space in the Arduino memory
by using the lowest possible number of int statements, because they are not in the program
twice, which also enables the LEDs to Flash BRIGHT, instead of 'glinting'.
*/
void setup() {}
void loop() {
for (int pin = 13; pin > 3; pin--) // 13 and 5 used here so that
// the outer LEDs are not double-flashed unnecessarily
if (pin %2){
pinMode(pin, OUTPUT); // declare pinMode once in the loop, here.
digitalWrite(pin, HIGH);
delay(delayPeriod);
digitalWrite(pin, LOW);
delay(delayPeriod);
B) Flash Bright (Odd led)
// Created 8th February 2019 by Neil Doherty
/*
'normal' presentation:
int ledPin3 = 3; // Usual assigned designated output pins
int ledPin4 = 4;
int ledPin5 = 5;
int ledPin6 = 6;
int ledPin7 = 7;
int ledPin8 = 8;
int ledPin9 = 9;
int ledPin10 = 10;
int ledPin11 = 11;
int ledPin12 = 12;
const int delayperiod = 30;
then we would have:
void setup () {
pinMode(ledPin3, OUTPUT); // Usual pinMode
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
pinMode(ledPin11, OUTPUT);
pinMode(ledPin12, OUTPUT);
*/
// Instead of all that, delete all of the above and use:
// Created 8th February 2019 by Neil Doherty
// instead of making eleven int statements, only two are used.
const int delayPeriod = 70; // uses less memory than int.
/* However, by creating void setup() as an empty statement, we save space in the Arduino memory
by using the lowest possible number of int statements, because they are not in the program
twice, which also enables the LEDs to Flash BRIGHT, instead of 'glinting'.
*/
void setup() {}
void loop() {
for (int pin = 13; pin > 3; pin--) // 13 and 5 used here so that
// the outer LEDs are not double-flashed unnecessarily
if (!(pin %2)){
pinMode(pin, OUTPUT); // declare pinMode once in the loop, here.
digitalWrite(pin, HIGH);
delay(delayPeriod);
digitalWrite(pin, LOW);
delay(delayPeriod);
C) Flash Bright (Even led)
// Created 8th February 2019 by Neil Doherty
/*
'normal' presentation:
int ledPin3 = 3; // Usual assigned designated output pins
int ledPin4 = 4;
int ledPin5 = 5;
int ledPin6 = 6;
int ledPin7 = 7;
int ledPin8 = 8;
int ledPin9 = 9;
int ledPin10 = 10;
int ledPin11 = 11;
int ledPin12 = 12;
const int delayperiod = 30;
then we would have:
void setup () {
pinMode(ledPin3, OUTPUT); // Usual pinMode
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
pinMode(ledPin11, OUTPUT);
pinMode(ledPin12, OUTPUT);
*/
// Instead of all that, delete all of the above and use:
// Created 8th February 2019 by Neil Doherty
// instead of making eleven int statements, only two are used.
const int delayPeriod = 70; // uses less memory than int.
/* However, by creating void setup() as an empty statement, we save space in the Arduino memory
by using the lowest possible number of int statements, because they are not in the program
twice, which also enables the LEDs to Flash BRIGHT, instead of 'glinting'.
*/
void setup() {}
void loop() {
for (int pin = 13; pin > 3; pin--) // 13 and 5 used here so that
// the outer LEDs are not double-flashed unnecessarily
if (!(pin %2)){
pinMode(pin, OUTPUT); // declare pinMode once in the loop, here.
digitalWrite(pin, HIGH);
delay(delayPeriod);
digitalWrite(pin, LOW);
delay(delayPeriod);