Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
en:iot-open:remotelab:ume:smartme:b3 [2019/09/27 15:02] – created salvatdien:iot-open:remotelab:ume:smartme:b3 [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-B3: PWM mode (~) of digital pins, programming threshold values +==== IB3: PWM mode (~) of digital pins, programming threshold values ==== 
 + 
  
-Target group+=== Target group ===
 This hands-on lab guide is intended for the Beginners but other target groups may benefit from it, treating it as a tool for advanced projects. This hands-on lab guide is intended for the Beginners but other target groups may benefit from it, treating it as a tool for advanced projects.
-Prerequisites + 
-Liquid Crystal library, you may refer to the B1 exercise. +=== Prerequisites === 
-RGB LED. All the nodes of SmartME Network Laboratory are equipped with an RGB LED of which, however, at the moment it is only possible to use the green light component. This single colour component can be considered and effectively managed as a separate LED.+ 
 +== Liquid Crystal == 
 +For this library, you may refer to the [[en:iot-open:remotelab:ume:smartme:b1|B1 exercise]].  
 + 
 +== RGB LED == 
 +The SmartME Network Laboratory Arduino nodes 1-5 are equipped with an RGB LED.  
 +To connect other devices, however, only the green light component is available, exposed as a separate LED.
 To turn on the green LED, you have to follow three steps: To turn on the green LED, you have to follow three steps:
-first, you have to define a variable int that will hold the number of the pin that the LED is connected to (int greenPin = 3;); +  - first, you have to define a variable with the number of the pin where the LED is connected to (int greenPin = 3;); 
-second, you need to configure this variable in output mode (OUTPUT). You do this with a call to the pinMode(pin, mode) function, inside the setup() function. +  second, you need to configure this variable in output mode (OUTPUT) by invoking the pinMode(pin, mode) function, inside the setup() function. 
-finally, you need to send to this variable a HIGH signal by using the digitalWrite(pin, value) function, inside the loop() function. To turn off the LED, you need to send a LOW signal value to this pin. You can make the LED flash by changing the length of the HIGH and LOW states.+  finally, you need to send to this variable a HIGH signal by using the digitalWrite(pin, value) function, inside the loop() function.  
 +To turn off the LED, you need to send a LOW signal value to this pin.  
 +You can make the LED flashing by tuning the delay of HIGH and LOW states.
 The digital pins either give you 5V (when turned HIGH) or 0V (when turned LOW) and the output is a square wave signal.  The digital pins either give you 5V (when turned HIGH) or 0V (when turned LOW) and the output is a square wave signal. 
 PWM stands for Pulse Width Modulation and it is a technique used in controlling the brightness of the LED. The PWM pins are labelled with ~ sign. PWM stands for Pulse Width Modulation and it is a technique used in controlling the brightness of the LED. The PWM pins are labelled with ~ sign.
-The function analogWrite() can be used to generate a PWM signal in those digital pins that are labelled with ~ sign. The frequency of this generated signal for most pins will be about 490Hz and you can give the value from 0-255 using this function. +The function analogWrite() can be used to generate a PWM signal in those digital pins that are labelled with ~ sign. The frequency of this generated signal for most pins will be about 490Hz and you can give the value from 0-255 using this function 
-analogWrite(0) means a signal of 0% duty cycle. +  analogWrite(0) means a signal of 0% duty cycle. 
-analogWrite(127) means a signal of 50% duty cycle. +  analogWrite(127) means a signal of 50% duty cycle. 
-analogWrite(255) means a signal of 100% duty cycle.+  analogWrite(255) means a signal of 100% duty cycle.
 The function random() generates pseudo-random numbers. The syntax is random(max) or random(min, max), where min represents the lower bound of the random value, inclusive (optional); and max represents the upper bound of the random value, exclusive. The function returns a long random number between min and max-1. The function random() generates pseudo-random numbers. The syntax is random(max) or random(min, max), where min represents the lower bound of the random value, inclusive (optional); and max represents the upper bound of the random value, exclusive. The function returns a long random number between min and max-1.
    
-The circuit:+== The circuit: ==
 RGB GREEN pin = Arduino pin 3 (~) RGB GREEN pin = Arduino pin 3 (~)
-Scenario + 
-Initialize the LCD screen with the label “rand value”, then calculates a random value. If randomValue is lower than lowThreshold, turn on the LED. If randomValue is upper than highThreshold, turn off the LED. After 1 second, print the random value to the LCD. Then, turn on the LED for 3 seconds, assigning it a value of brightness which corresponds to the random value previously calculated. Note, you can set the two values of the threshold as you prefer. You can modify the brightness of the LED because, although it is connected to a digital pin, the Arduino pin number 3 is labelled with ~ sign (PWM). +=== Scenario === 
-Result+ 
 +Initialize the LCD screen with the label “rand value”, then calculates a random value. If randomValue is lower than lowThreshold, turn on the LED. If randomValue is upper than highThreshold, turn off the LED. After 1 second, print the random value to the LCD. Then, turn on the LED for 3 seconds, assigning it a value of brightness which corresponds to the random value previously calculated. Note, you can set the two values of the threshold as you prefer. You can modify the brightness of the LED because, although it is connected to a digital pin, the Arduino pin number 3 is labeled with ~ sign (PWM). 
 + 
 +=== Result ===
 You should see the LED on or off for 1 second, a second if the value is greater or less than the predefined threshold values. Next, you should see the randomly calculated value between 0 and 255 on the LCD, at that point, the LED should assign a brightness associated with that value, and keep it for 3 seconds. You should see the LED on or off for 1 second, a second if the value is greater or less than the predefined threshold values. Next, you should see the randomly calculated value between 0 and 255 on the LCD, at that point, the LED should assign a brightness associated with that value, and keep it for 3 seconds.
-Start+ 
 +=== Start ===
 There are no special steps to be performed. There are no special steps to be performed.
  
-Steps +=== Steps === 
-Step 1 + 
-Include LCD driver library:+== Step 1 == 
 +Include the LCD driver library: 
 +<code c>
 #include <LiquidCrystal.h> #include <LiquidCrystal.h>
-Step 2+</code> 
 + 
 +== Step 2 == 
 Instantiate the software controller component for the LCD display. Initialize the LED pin. Declare the threshold values. Instantiate the software controller component for the LCD display. Initialize the LED pin. Declare the threshold values.
 +
 +<code c>
 // initialize the library with the numbers of the interface pins // initialize the library with the numbers of the interface pins
 LiquidCrystal lcd(7, 6, 5, 4, 13, 2); LiquidCrystal lcd(7, 6, 5, 4, 13, 2);
-  
 // initializing LED Pin // initializing LED Pin
 int greenPin = 3; int greenPin = 3;
-  
 // declaring the threshold values // declaring the threshold values
 int lowThreshold = 127; int lowThreshold = 127;
 int highTreshold = 128;  int highTreshold = 128; 
 +</code>
  
-     Step 3 +== Step 3 == 
- +Initialize the display and declare the LED pin as OUTPUT - preferably in the setup() function:
- +
-Initialize display and declare the LED pin as OUTPUT - we suggest to do it in setup() function:+
  
 +<code c>
 void setup(){ void setup(){
-  +      pinMode(greenPin, OUTPUT);  // declaring LED pin as output 
-      // declaring LED pin as output +      lcd.begin(162);           // set up the LCD's number of columns and rows 
-      pinMode(greenPinOUTPUT); +      lcd.print("rand value");    // print the random value label to the LCD
-       +
-      // set up the LCD's number of columns and rows +
-      lcd.begin(16, 2); +
-      // print the random value label to the LCD +
-      lcd.print("rand value");+
 } }
 +</code>
    
    
-Step 4+== Step 4 ==
 Implement loop() to do in the order:  Implement loop() to do in the order: 
 calculate a random value between 0 and 255;  calculate a random value between 0 and 255; 
Line 67: Line 81:
    
    
 +<code c>
 void loop() { void loop() {
-   
   // calculate a randomValue in the range 0-255   // calculate a randomValue in the range 0-255
   int randomValue = random(255);   int randomValue = random(255);
-   
-  // if the randomValue is lower than  
   if (randomValue < lowThreshold){   if (randomValue < lowThreshold){
       digitalWrite(greenPin, HIGH);       digitalWrite(greenPin, HIGH);
   }   }
-   
   if (randomValue > highTreshold){    if (randomValue > highTreshold){ 
     digitalWrite(greenPin, LOW);     digitalWrite(greenPin, LOW);
   }   }
-    +   delay(1000); // print the random value of light to the LCD
-   delay(1000); +
-  +
-   // print the random value of light to the LCD+
    lcd.setCursor(14, 0);    lcd.setCursor(14, 0);
    lcd.print(randomValue);    lcd.print(randomValue);
-  
    analogWrite(greenPin, randomValue);    analogWrite(greenPin, randomValue);
    delay(3000);    delay(3000);
-  
   }   }
 +</code>
  
-Result validation + 
-Observe the state of the LED for 1 second, this status will depend on the random number calculated and the threshold values that have been set. Observe the random value calculated on the display monitor. Observe how the random value affects the LED brightness for 3 seconds.+=== Result validation === 
 +The state of the LED will depend on the random number calculated and on the threshold values that have been set.  
 +The random value will be shown by the display monitor.  
 +It also will affect the LED brightness for 3 seconds.
    
-Platformio.ini +=== Platformio.ini === 
- +<code>
 [env:uno] [env:uno]
 platform = atmelavr platform = atmelavr
 board = uno board = uno
 framework = arduino framework = arduino
-  
 lib_ldf_mode=deep+ lib_ldf_mode=deep+
 lib_compat_mode=strict lib_compat_mode=strict
- +lib_deps = 
 + DHT sensor library@1.3.0 
 + Adafruit Unified Sensor@1.0.3
 lib_deps_external = lib_deps_external =
  https://github.com/arduino-libraries/LiquidCrystal.git#1.0.7  https://github.com/arduino-libraries/LiquidCrystal.git#1.0.7
 +</code>
  
 +=== IB3.cpp ===
  
-B3.cpp 
  
 +<code c>
 #include <LiquidCrystal.h> #include <LiquidCrystal.h>
 #include "DHT.h" #include "DHT.h"
-  
-#include <LiquidCrystal.h> 
-  
 // initialize the library with the numbers of the interface pins // initialize the library with the numbers of the interface pins
 LiquidCrystal lcd(7, 6, 5, 4, 13, 2); LiquidCrystal lcd(7, 6, 5, 4, 13, 2);
Line 124: Line 133:
 int lowThreshold = 500; int lowThreshold = 500;
 int highTreshold = 600; int highTreshold = 600;
- +
 void setup(){ void setup(){
   // declaring LED pin as output   // declaring LED pin as output
Line 133: Line 142:
   lcd.print("rand value");   lcd.print("rand value");
 } }
- +
 void loop() { void loop() {
-  
   int randomValue = random(255);   int randomValue = random(255);
-  
   if (randomValue < lowThreshold){   if (randomValue < lowThreshold){
   digitalWrite(greenPin, HIGH);   digitalWrite(greenPin, HIGH);
   }   }
-  
   if (randomValue > highTreshold){   if (randomValue > highTreshold){
  digitalWrite(greenPin, LOW);  digitalWrite(greenPin, LOW);
   }   }
-   
    delay(1000);    delay(1000);
-  
    // print the random value of light to the LCD    // print the random value of light to the LCD
    lcd.setCursor(14, 0);    lcd.setCursor(14, 0);
    lcd.print(randomValue);    lcd.print(randomValue);
-  
    analogWrite(greenPin, randomValue);    analogWrite(greenPin, randomValue);
    delay(3000);    delay(3000);
-  
   }   }
- +</code> 
  
  
  
en/iot-open/remotelab/ume/smartme/b3.1569596560.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0