Voorbeelden uit “Besturingstechniek in Arduino-C

advertisement
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
}
Download