.
Send HEX values to Arduino Reviewed by Unknown on 13:52 Rating: 4.5

Send HEX values to Arduino

FIVE MINUTE TUTORIAL

Project Description: Sending Hex values to an Arduino UNO


This simple tutorial will show you how to send Hexadecimal values from a computer to an Arduino Uno. The "Processing" programming language will be used to send the HEX values from the computer when a mouse button is pressed. The Arduino will use these values to adjust the brightness of an LED.



 

Learning Objectives


  • To Send Hexadecimal (Hex) values from a computer to the Arduino
  • Trigger an action based on the press of a mouse button
  • Learn to create a simple Computer to Arduino interface
  • Use Arduino's PWM capabilities to adjust brightness of an LED
  • Learn to use Arduino's analogWrite() function
  • Create a simple LED circuit


 

Parts Required:


Fritzing Sketch


The diagram below will show you how to connect an LED to Digital Pin 10 on the Arduino.
Don't forget the 330 ohm resistor !
 


 
 

Arduino Sketch


The latest version of Arduino IDE can be downloaded here.
 
  1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/* ==================================================================================================================================================
         Project: 5 min tutorial: Send Hex from computer to Arduino
          Author: Scott C
         Created: 21th June 2015
     Arduino IDE: 1.6.4
         Website: http://arduinobasics.blogspot.com/p/arduino-basics-projects-page.html
     Description: Arduino Sketch used to adjust the brightness of an LED based on the values received
                  on the serial port. The LED needs to be connected to a PWM pin. In this sketch
                  Pin 10 is used, however you could use Pin 3, 5, 6, 9, or 11 - if you are using an Arduino Uno.
===================================================================================================================================================== */

byte byteRead; //Variable used to store the byte received on the Serial Port
int ledPin = 10; //LED is connected to Arduino Pin 10. This pin must be PWM capable.

void setup() {
 Serial.begin(9600); //Initialise Serial communication with the computer
 pinMode(ledPin, OUTPUT); //Set Pin 10 as an Output pin
 byteRead = 0;                   //Initialise the byteRead variable to zero.
}

void loop() {
  if(Serial.available()) {
    byteRead = Serial.read(); //Update the byteRead variable with the Hex value received on the Serial COM port.
  }
  
  analogWrite(ledPin, byteRead); //Use PWM to adjust the brightness of the LED. Brightness is determined by the "byteRead" variable.
}


 


 
 

Processing Sketch


The latest version of the Processing IDE can be downloaded here.
 
  1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/* ==================================================================================================================================================
         Project: 5 min tutorial: Send Hex from computer to Arduino
          Author: Scott C
         Created: 21th June 2015
  Processing IDE: 2.2.1
         Website: http://arduinobasics.blogspot.com/p/arduino-basics-projects-page.html
     Description: Processing Sketch used to send HEX values from computer to Arduino when the mouse is pressed.
                  The alternating values 0xFF and 0x00 are sent to the Arduino Uno to turn an LED on and off.
                  You can send any HEX value from 0x00 to 0xFF. This sketch also shows how to convert Hex strings
                  to Hex numbers.
===================================================================================================================================================== */

import processing.serial.*; //This import statement is required for Serial communication

Serial comPort;                       //comPort is used to write Hex values to the Arduino
boolean toggle = false; //toggle variable is used to control which hex variable to send
String zeroHex = "00"; //This "00" string will be converted to 0x00 and sent to Arduino to turn LED off.
String FFHex = "FF"; //This "FF" string will be converted to 0xFF and sent to Arduino to turn LED on.

void setup(){
    comPort = new Serial(this, Serial.list()[0], 9600); //initialise the COM port for serial communication at a baud rate of 9600.
    delay(2000);                      //this delay allows the com port to initialise properly before initiating any communication.
    background(0); //Start with a black background.
    
}


void draw(){ //the draw() function is necessary for the sketch to compile
    //do nothing here //even though it does nothing.
}


void mousePressed(){ //This function is called when the mouse is pressed within the Processing window.
  toggle = ! toggle;                   //The toggle variable will change back and forth between "true" and "false"
  if(toggle){ //If the toggle variable is TRUE, then send 0xFF to the Arduino
     comPort.write(unhex(FFHex)); //The unhex() function converts the "FF" string to 0xFF
     background(0,0,255); //Change the background colour to blue as a visual indication of a button press.
  } else {
    comPort.write(unhex(zeroHex)); //If the toggle variable is FALSE, then send 0x00 to the Arduino
    background(0); //Change the background colour to black as a visual indication of a button press.
  }
}


 

The Video


 


The tutorial above is a quick demonstration of how to convert Hex strings on your computer and send them to an Arduino. The Arduino can use the values to change the brightness of an LED as shown in this tutorial, however you could use it to modify the speed of a motor, or to pass on commands to another module. Hopefully this short tutorial will help you with your project. Please let me know how it helped you in the comments below.

 
 



If you like this page, please do me a favour and show your appreciation :

 
Visit my ArduinoBasics Google + page.
Follow me on Twitter by looking for ScottC @ArduinoBasics.
I can also be found on Pinterest and Instagram.
Have a look at my videos on my YouTube channel.


 
 
             


 
 



However, if you do not have a google profile...
Feel free to share this page with your friends in any way you see fit.




Description: Send HEX values to Arduino Rating: 3.5 Reviewer: Unknown ItemReviewed: Send HEX values to Arduino
NPN Transistor Sketch (P2N2222AG) using PWM Reviewed by Unknown on 18:34 Rating: 4.5

NPN Transistor Sketch (P2N2222AG) using PWM

We are now going to build a simple circuit to test out the P2N2222AG transistor in the sparkfun inventor's kit. You can also buy this transistor from RS-online.

Here are the components that you will need.
  • 1 x Arduino UNO
  • 1 x Breadboard
  • 1 x P2N2222AG transistor
  • 3 x LEDs  (1 x Red LED, 2 x Yellow LEDs)
  • 3 x 330 ohm Resistors
  • Wires to connect it all together.
Here is the Fritzing sketch:






We will use Pulse width modulation (PWM) to fade the LEDs in and out. 
Load the "Fading" example into the Arduino. (File>Examples>Analog>Fading)



I used this sketch to help me understand how electricity flowed through the transistor by disconnecting a wire here and there. I am not sure if this is advisable, so do this at your own risk. If you are an electrical engineer, feel free to comment. Please let me know if this is "risky" business.
I have had no formal training in electronics, so don't blame me if your arduino, or transistor blows up !
But from what I understand, I cannot see any harm in disconnecting wires with this particular circuit.
Please note, that I would disconnect the power to the arduino before modifying the wires.
Description: NPN Transistor Sketch (P2N2222AG) using PWM Rating: 3.5 Reviewer: Unknown ItemReviewed: NPN Transistor Sketch (P2N2222AG) using PWM
Arduino UNO: LED Sensor, Part One Reviewed by Unknown on 22:30 Rating: 4.5

Arduino UNO: LED Sensor, Part One

As seen in the previous blog postings, the LED (Light Emitting Diode) was used to DISPLAY the result of various sensors. It was also used to create a variety of Light patterns or sequences.

The LED is commonly used as an OUTPUT device, however, I have since found out: there is another option.

You can use the LED as an INPUT device !!



I have only tried this with a Yellow LED and a Red LED, however, this should work with any colour. Some sites recommend using a clear/transparent/colourless LED for best effect, but it depends on what you are trying to achieve.

The LED responds better to light of the same wavelength that it emits. So a yellow LED responds better to yellow light, and a red LED responds better to Red light.

The following experiment attempts to prove this theory.
A Red and Yellow LED alternate and fade in to maximum brightness using PWM (Analog Output). Meanwhile, a separate LED is used as an INPUT device to receive the light. The value obtained is plotted using a processing sketch.

The chart above used a Yellow LED to measure the light emitted from a Red and then a Yellow LED.
As the Yellow LED gets brighter, the INPUT LED takes less time to discharge, and thus produces a lower result. On the other hand, the Red LED has little effect on the INPUT LED, despite it's brightness.
Ambient light will produce different graph patterns.

Parts Required:
  • Arduino UNO
  • 2 x Yellow LEDs
  • 1 x Red LED
  • 3 x 330 ohm Resistors (choose resistors suitable for your LEDs)
  • 5 wires to connect the circuit
  • Breadboard
  • Processing software
Here is the Sketch:

     Created with Fritzing : http://fritzing.org/


Here is the Arduino Code: which was adapted from this site.
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#define LED_Sensor_NEG 8
#define LED_Sensor_POS 7
#define Yellow_LED 10
#define Red_LED 9

int switcher=0;
int lightLevelY=0;
int lightLevelR=0;

void setup(){
pinMode(LED_Sensor_POS,OUTPUT);
digitalWrite(LED_Sensor_POS,LOW);
pinMode(Yellow_LED,OUTPUT);
pinMode(Red_LED,OUTPUT);

//Turn on Serial Protocol
Serial.begin(9600);
}

void loop()
{

//Alternate the flashing of the Yellow and Red LED
if(switcher==0){
lightLevelR+=4;
if(lightLevelR>255){
lightLevelR=0;
switcher=1;
}
} else {
lightLevelY+=3;
if(lightLevelY>255){
lightLevelY=0;
switcher=0;
}
}
analogWrite(Red_LED,lightLevelR);
analogWrite(Yellow_LED,lightLevelY);


// Charge the LED by applying voltage in the opposite direction
pinMode(LED_Sensor_NEG,OUTPUT);
digitalWrite(LED_Sensor_NEG,HIGH);

// Set pin 8 to read the input and Turn off the internal pull up resistor.
// The greater the amount of light in the room, the smaller the number represented by variable "darkness".
long darkness=0;
int outputVal=0;
pinMode(LED_Sensor_NEG,INPUT);
digitalWrite(LED_Sensor_NEG,LOW);
while((digitalRead(LED_Sensor_NEG)!=0) && darkness<80000){
darkness++;
}

outputVal=darkness/80;
//Print the darkness level in the room.
Serial.println(outputVal);
}

Here is the Processing Code:     Code Source
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/* Processing code for this example */

// Graphing sketch


// This program takes ASCII-encoded strings
// from the serial port at 9600 baud and graphs them. It expects values in the
// range 0 to 1023, followed by a newline, or newline and carriage return
// Created 20 Apr 2005
// Updated 18 Jan 2008
// by Tom Igoe
// This example code is in the public domain.

import processing.serial.*;

Serial myPort; // The serial port
int xPos = 1; // horizontal position of the graph

void setup () {
// set the window size:
size(400, 300);

// List all the available serial ports
println(Serial.list());
// I know that the second port in the serial list on my PC
// is always my Arduino, so I open Serial.list()[1].
// Open whatever port is the one you're using.
myPort = new Serial(this, Serial.list()[1], 9600);
// don't generate a serialEvent() unless you get a newline character:
myPort.bufferUntil('\n');
// set inital background:
background(0);
}
void draw () {
// everything happens in the serialEvent()
}

void serialEvent (Serial myPort) {
// get the ASCII string:
String inString = myPort.readStringUntil('\n');

if (inString != null) {
// trim off any whitespace:
inString = trim(inString);
// convert to a float and map to the screen height:
float inByte = float(inString);
inByte = map(inByte, 0, 1023, 0, height);

// draw the line:
stroke(127,34,255);
line(xPos, height, xPos, height - inByte);

// at the edge of the screen, go back to the beginning:
if (xPos >= width) {
xPos = 0;
background(0);
}
else {
// increment the horizontal position:
xPos++;
}
}
}
Description: Arduino UNO: LED Sensor, Part One Rating: 3.5 Reviewer: Unknown ItemReviewed: Arduino UNO: LED Sensor, Part One
Back to top