On to another Arduino shield and this is one of my favourites, its a low cost shield which contains a variety of resources on it making it ideal for beginners. We will again connect this to a Particle Photon fitted to a Shield Shield for Spark Core and the examples will be written in the web online IDE
here is a picture of the shield
Features
You can see most of the features but here is a quick summary of what is fitted to the shield
two LEDs
two switches
reset button
Measuring temperature and humidity with DHT11 temperature and humidity sensor
Using revolving potentiometer to do analog input
passive buzzer module
Full-color RGB LED
Utilizing photovaristor to detect the brightness of light
LM35D temperature sensor
infrared receiver
2-channel digital port(D7.D8)
1-channel analog port(A3)
Code Examples
None of these examples need any external libraries,
Buzzer
[codesyntax lang=”cpp”]
/* Arduino - Shield shield 5 D1 */ int speakerPin = D1; // Notes defined in microseconds (Period/2) // from note C to B, Octaves 3 through 7 int notes[] = {0, /* C, C#, D, D#, E, F, F#, G, G#, A, A#, B */ 3817,3597,3401,3205,3030,2857,2703,2551,2404,2273,2146,2024, // 3 (1-12) 1908,1805,1701,1608,1515,1433,1351,1276,1205,1136,1073,1012, // 4 (13-24) 956, 903, 852, 804, 759, 716, 676, 638, 602, 568, 536, 506, // 5 (25-37) 478, 451, 426, 402, 379, 358, 338, 319, 301, 284, 268, 253, // 6 (38-50) 239, 226, 213, 201, 190, 179, 169, 159, 151, 142, 134, 127 }; // 7 (51-62) #define NOTE_G3 2551 #define NOTE_G4 1276 #define NOTE_C5 956 #define NOTE_E5 759 #define NOTE_G5 638 #define RELEASE 20 #define BPM 100 // notes in the melody: int melody[] = {NOTE_E5,NOTE_E5,0,NOTE_E5,0,NOTE_C5,NOTE_E5,0,NOTE_G5,0,0,NOTE_G4}; // note durations: 4 = quarter note, 2 = half note, etc.: int noteDurations[] = {4,4,4,4,4,4,4,4,4,2,4,4}; void setup() { // iterate over the notes of the melody: for (int thisNote = 0; thisNote < 12; thisNote++) { // to calculate the note duration, take one second // divided by the note type. // e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 60*1000/BPM/noteDurations[thisNote]; tone(speakerPin, (melody[thisNote]!=0)?(500000/melody[thisNote]):0,noteDuration-RELEASE); // blocking delay needed because tone() does not block delay(noteDuration); } }
[/codesyntax]
LDR example
[codesyntax lang=”cpp”]
int ldrValue = 0; char *message = "my name is particle"; String aString; void setup() { // variable name max length is 12 characters long Particle.variable("ldrValue", ldrValue); if (Particle.variable("mess", message)==false) { // variable not registered! } Particle.variable("mess2", aString); pinMode(A1, INPUT); } void loop() { // Read the analog value of the sensor ldrValue = analogRead(A1); delay(200); }
[/codesyntax]
LED example
[codesyntax lang=”cpp”]
/* Arduino - Shield shield 12 A4 13 A3 */ #define redLed A4 #define blueLed A3 void setup() { pinMode(redLed, OUTPUT); pinMode(blueLed, OUTPUT); } void loop() { digitalWrite(redLed, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(blueLed, LOW); // turn the LED off by making the voltage LOW delay(1000); digitalWrite(redLed, LOW); // turn the LED off by making the voltage LOW digitalWrite(blueLed, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); }
[/codesyntax]
POT example
[codesyntax lang=”cpp”]
int vrValue = 0; char *message = "my name is particle"; String aString; void setup() { // variable name max length is 12 characters long Particle.variable("vrValue", vrValue); if (Particle.variable("mess", message)==false) { // variable not registered! } Particle.variable("mess2", aString); pinMode(A0, INPUT); } void loop() { // Read the analog value of the sensor vrValue = analogRead(A0); delay(200); }
[/codesyntax]
RGB led example
[codesyntax lang=”cpp”]
/* Arduino - Shield shield 9 D6 10 A2 11 A5 */ #define redLed D6 #define greenLed A2 #define blueLed A5 void setup() { pinMode(redLed, OUTPUT); pinMode(greenLed, OUTPUT); pinMode(blueLed, OUTPUT); } void loop() { //red on digitalWrite(redLed, HIGH); digitalWrite(greenLed, LOW); digitalWrite(blueLed, LOW); delay(1000); //green on digitalWrite(redLed, LOW); digitalWrite(greenLed, HIGH); digitalWrite(blueLed, LOW); delay(1000); //blue on digitalWrite(redLed, LOW); digitalWrite(greenLed, LOW); digitalWrite(blueLed, HIGH); delay(1000); }
[/codesyntax]
Links
$10 for one of these shields
keyestudio Multi-purpose Shield V1 for arduino starter