Voorbeelden uit Besturingstechniek in Arduino-C ‘Hello world’-voorbeeld van bladzijde 152 void setup() // run once, when the sketch starts { Serial.begin(9600); Serial.print("Hello world"); // Print naar de PC delay(1000); // waits for a second } void loop() // run over and over again { delay(1000); // waits for a second } “Kwadraat 0” op bladzijde 153 Let op werkt alleen op gehele getallen van 0 t/m 9 omdat de functie serial.read niet het getal geeft maar de asciicode van het getal /* * kwadraat * */ int getal = 0; // for incoming serial data void setup() // run once, when the sketch starts { Serial.begin(9600); delay(1000); if (Serial.available() > 0) { getal=Serial.read(); //NB ziet een getal als zijn asco code //dus 0=48 1=49 en 10=4948 getal=getal-48;//gaat goed als getal<10 getal=getal*getal; Serial.println(getal); // Print naar de PC } } void loop() // run over and over again { delay(1000); // waits for a second } Kwadraat1 op bladzijde 154 Let op werkt alleen op gehele getallen van 0 t/m 9 omdat de functie serial.read niet het getal geeft maar de asciicode van het getal /* * kwadraat * */ int getal = 0; // for incoming serial data void setup() // run once, when the sketch starts { Serial.begin(9600); delay(1000); // waits for a second } void loop() // run over and over again { if (Serial.available() > 0) { getal=Serial.read(); //NB ziet een getal als zijn asco code //dus 0=48 1=49 en 10=4948 getal=getal-48;//gaat goed als getal<10 getal=getal*getal; Serial.println(getal); // Print naar de PC } delay(1000); // waits for a second } Knipperend LED op bladzijde 155 /* * Blink * * The basic Arduino example. Turns on an LED on for one second, * then off for one second, and so on... We use pin 13 because, * depending on your Arduino board, it has either a built-in LED * or a built-in resistor so that you need only an LED. * * http://www.arduino.cc/en/Tutorial/Blink */ int ledPin = 13; // LED connected to digital pin 13 void setup() // run once, when the sketch starts { pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() // run over and over again { digitalWrite(ledPin, HIGH); // sets the LED on delay(500); // waits for a half second digitalWrite(ledPin, LOW); // sets the LED off delay(500); // waits for a half second } Led met schakelaar op bladzijde 156 /* * Als pen 2 (naast TXT) met een draadje verbonden is met GND, * dan blijft het LED uit. Als pen 2 niet verbonden is of met 5V * wordt verbonden is het LED aan */ int ledPin = 13; int inputPin = 2; int val = 0; // choose the pin for the LED // choose the input pin (for a pushbutton) // variable for reading the pin status void setup() { pinMode(ledPin, OUTPUT); pinMode(inputPin, INPUT); } // declare LED as output // declare pushbutton as input void loop(){ val = digitalRead(inputPin); // read input value if (val == HIGH) { // check if the input is HIGH digitalWrite(ledPin, HIGH); // turn LED ON delay(1000); digitalWrite(ledPin, LOW); // turn LED OFF } } Test ingang op bladzijde 161 /* * Als pen 2 (naast TXT) met een draadje verbonden is met GND, * dan print het programma 1x/s "GND". Als pen 2 is verbonden * met 5V een "1". Als de pin niet verbonden is dan is de waarde * onzeker */ int inputPin = 2; int val = 0; // choose the input pin (for a pushbutton) // variable for reading the pin status void setup() { pinMode(inputPin, INPUT); // declare pushbutton as input Serial.begin(9600); delay(1000); // waits for a second } void loop(){ val = digitalRead(inputPin); // read input value if (val == HIGH) { // check if the input is HIGH Serial.println("1");} // Print naar de PC else { Serial.println("GND");} delay(1000); // Print naar de PC } Stopwatchprogramma op bladzijde 165 #include <LiquidCrystal.h> // LiquidCrystal display with: // rs on pin 12 // rw on pin 11 // enable on pin 10 // d4, d5, d6, d7 on pins 5, 4, 3, 2 LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); int tijd=0; int inputPin = 2; // choose the input pin (for a pushbutton) int val = 0; // variable for reading the pin status void setup() { Serial.begin(9600); //alleen voor de seriele print // Print a message to the LCD. lcd.print("hello, world!"); pinMode(inputPin, INPUT); // declare pushbutton as input } void loop() { tijd=0; do{ val = digitalRead(inputPin); // read input value } while (val == LOW); do{ val = digitalRead(inputPin); // read input value Serial.println(tijd); //'lcd.print(tijd); delay(998); tijd+=1; } while (val == HIGH); } N.B. De volgende programma’s zijn niet in de praktijk getest en kunnen dus slordigheidsfouten bevatten. SFC-programma stempelmachine van bladzijde 167 /* * SFC */ int O_Klem_p=9; // output pin voor Klem_p (B.1=9) int O_Klem_m=10; // output pin voor Klem_m (B.2=10) int O_Stempel_p=11; // output pin voor Stempel_p (B.3=11) int O_R_mband=12; // output pin voor R_mband (B.4=12) int I_doos=1; // input pin voor doos (D.1=1) int I_klem0=2; // input pin voor klem0 (D.2=2) int I_klem1=3; // input pin voor klem0 (D.3=3) int I_stempel0=4; // input pin voor stempel0 (D.4=4) int I_stempel1=5; // input pin voor stempel1 (D.5=5) int doos; // variabele voor de status van doos int klem0; // variabele voor de status van klem0 int klem1; // variabele voor de status van klem1 int stempel0; // variabele voor de status van stempel0 int stempel1; // variabele voor de status van stempel1 int G1; //variabale als geheugen void setup() { pinMode(O_Klem_p, OUTPUT); // declare as output pinMode(O_Klem_m, OUTPUT); // declare as output pinMode(O_Stempel_p, OUTPUT); // declare as output pinMode(O_R_mband, OUTPUT); // declare as output pinMode(I_doos, INPUT); // declare as input pinMode(I_klem0, INPUT); // declare as input pinMode(I_klem1, INPUT); // declare as input pinMode(I_stempel0, INPUT); // declare as input pinMode(I_stempel1, INPUT); // declare as input } void loop(){ do{ doos = digitalRead(I_doos); // read input value klem0 = digitalRead(I_klem0); // read input value stempel0 = digitalRead(I_stempel0); // read input value } while (not ((((((doos == HIGH) and (klem0 == HIGH)) and (stempel0 == HIGH))) and (G1 == 1)))); digitalWrite(O_Klem_p, HIGH); //aanzetten ACTIES IN STAP0 digitalWrite(O_R_mband, LOW); //uitzetten do{ klem1 = digitalRead(I_klem1); // read input value } while (not(klem1 == HIGH)); // check if the input is HIGH digitalWrite(O_Stempel_p, HIGH); //aanzetten ACTIES IN STAP1 digitalWrite(O_Klem_p, LOW); //uitzetten digitalWrite(O_R_mband, LOW); //uitzetten do{ stempel1 = digitalRead(I_stempel1); // read input value } while (not(stempel1 == HIGH)); // check if the input is HIGH digitalWrite(O_Stempel_p, LOW); //uitzetten ACTIES IN STAP2 G1=1; do{ stempel0 = digitalRead(I_stempel0); // read input value } while (not((stempel0 == HIGH))); // check if the input is HIGH digitalWrite(O_Klem_m, HIGH); //aanzetten ACTIES IN STAP3 do{ klem0 = digitalRead(I_klem0); // read input value } while (not(klem0 == HIGH)); // check if the input is HIGH digitalWrite(O_R_mband, HIGH); //aanzetten ACTIES IN STAP4 digitalWrite(O_Klem_m, LOW); //uitzetten do{ doos = digitalRead(I_doos); // read input value } while (not(doos == LOW)); // check if the input is HIGH } Ladderprogramma op bladzijde 169 /* * LADDER */ int O_Klem_p=9; // output pin voor Klem_p (B.1=9) int O_Klem_m=10; // output pin voor Klem_m (B.2=10) int O_Stempel_p=11; // output pin voor Stempel_p (B.3=11) int O_R_mband=12; // output pin voor R_mband (B.4=12) int I_doos=1; // input pin voor doos (D.1=1) int I_klem0=2; // input pin voor klem0 (D.2=2) int I_klem1=3; // input pin voor klem0 (D.3=3) int I_stempel0=4; // input pin voor stempel0 (D.4=4) int I_stempel1=5; // input pin voor stempel1 (D.5=5) int doos; // variabele voor de status van doos int klem0; // variabele voor de status van klem0 int klem1; // variabele voor de status van klem1 int stempel0; // variabele voor de status van stempel0 int stempel1; // variabele voor de status van stempel1 int G1; //variabale als geheugen void setup() { pinMode(O_Klem_p, OUTPUT); // declare as output pinMode(O_Klem_m, OUTPUT); // declare as output pinMode(O_Stempel_p, OUTPUT); // declare as output pinMode(O_R_mband, OUTPUT); // declare as output pinMode(I_doos, INPUT); // declare as input pinMode(I_klem0, INPUT); // declare as input pinMode(I_klem1, INPUT); // declare as input pinMode(I_stempel0, INPUT); // declare as input pinMode(I_stempel1, INPUT); // declare as input G1=0; } void loop(){ doos = digitalRead(I_doos); // read input value klem0 = digitalRead(I_klem0); // read input value klem1 = digitalRead(I_klem1); // read input value stempel0 = digitalRead(I_stempel0); // read input value stempel1 = digitalRead(I_stempel1); // read input value if (((((doos == HIGH) and (klem0 == HIGH)) and (stempel0 == HIGH))) and (G1 == 1)) { // check if the input is HIGH digitalWrite(O_Klem_p, HIGH); //aanzetten digitalWrite(O_Klem_m, LOW); //uitzetten digitalWrite(O_R_mband, LOW); //uitzetten } if ((klem1 == HIGH) and (G1 == 1)){ // check if the input is HIGH digitalWrite(O_Stempel_p, HIGH); //aanzetten } if (stempel1 == HIGH){ // check if the input is HIGH digitalWrite(O_Stempel_p, LOW); //uitzetten G1=1; } if (((klem1 == HIGH) and (stempel0 == HIGH)) and (G1 == 0)){ // check if the input is HIGH digitalWrite(O_Klem_p, LOW); //uitzetten digitalWrite(O_Klem_m, HIGH); //aanzetten } if ((klem0 == HIGH) and (G1 == 0)){ // check if the input is HIGH digitalWrite(O_R_mband, HIGH); //aanzetten } if (doos == LOW) { // check if the input is HIGH G1=1; //geheugen setten } } Thermostaatprogramma op bladzijde 171 /* * Thermostaat */ int IA_Sensor = 0; // de analoge pin voor de temperatuursensor int Verwarming = 13; // de pin voor de vewrwarming int Tsensor = 0; // variable voor de sensorwaarde float Temperatuur; void setup() { pinMode(Verwarming, OUTPUT); // declare the ledPin as an OUTPUT Serial.begin(9600); } void loop() { Tsensor = analogRead(IA_Sensor); // read the value from the sensor Temperatuur = (Tsensor-804)/-11.683; if (Temperatuur > 20) { digitalWrite(Verwarming, LOW); // Verwarming uit } if (Temperatuur < 20) { digitalWrite(Verwarming, HIGH); // Verwarming aan } delay(1000); // stop the program 1000 ms Serial.println(Temperatuur); //NB afgeronde waarde Als nauwkeuriger, dan eerst met 10 of 100 vermenigvuldigen }