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);