This is an old revision of the document!
Table of Contents
Τι είναι το Arduino Starter Kit R4 ;
Το Arduino Starter Kit R4 είναι ένα πακέτο εκμάθησης βασικών γνώσεων προγραμματισμού μικροελεγκτών. Περιλαμβάνει την πλακέτα Arduino UNO R4 WiFi καθώς και πλήθος βασικών ηλεκτρικών στοιχείων για δημιουργία απλών κυκλωμάτων .
Άσκηση 1
Άσκηση 2
int switchState = 0 ;
void setup() {
// put your setup code here, to run once:
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(2,INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
switchState = digitalRead(2);
if (switchState == LOW) {
digitalWrite(3,HIGH); // green LED
digitalWrite(4,LOW); // red LED
digitalWrite(5,LOW); // red LED
}
else {
digitalWrite(3,LOW); // green LED
digitalWrite(4,LOW); // red LED
digitalWrite(5,HIGH); // red LED
delay(250);
digitalWrite(4,HIGH); // red LED
digitalWrite(5,LOW); // red LED
delay(250);
}
}
Άσκηση 3 (αισθητήρας θερμότητας)
const int sensorPin = A0;
const float baselineTemp = 27.0;
void setup() {
Serial.begin(9600); // open a serial port
for (int pinNumber = 2; pinNumber<5; pinNumber++) {
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, LOW);
}
}
void loop() {
int sensorVal = analogRead(sensorPin);
Serial.print("Sensor Value: ");
Serial.print(sensorVal);
// convert the ADC reading to voltage
float voltage = (sensorVal/1024.0) * 5.0;
Serial.print(", Volts: ");
Serial.print(voltage);
Serial.print(", degrees C: ");
// convert the voltage to temperature in degrees
float temperature = (voltage - 0.5) * 100;
Serial.println(temperature);
if(temperature < baselineTemp+2) {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}else if(temperature >= baselineTemp+2 && temperature < baselineTemp+4) {
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}else if(temperature >= baselineTemp+4 && temperature < baselineTemp+6) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
}else if(temperature >= baselineTemp+6) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
}
delay(1);
}
Άσκ4 (αισθητήρες φωτός)
Βασικές έννοιες : ->PWM (Pulse Width Modulation)
α. Στήσιμο κυκλώματος
Αρκετός χρόνος χρειάστηκε για να στερεωθούν καλά οι χρωματικές ταινιούλες πάνω από τις φωτοδιόδους.
Ενα φωτοτρανζίστορ δημηριουργεί ρεύμα ανάλογο της απορροφούμενης ποσότητας φωτός.
Ο σκοπός είναι ανάλογα με το φως που δέχονται τα τρια φωτοτρανζίστορ να ανάβει και το RGB LED.
Αυτό φαίνεται καλύτερα :
- Αν εχουμε σκοτεινό δωμάτιο
- Χρησιμοποιήσουμε έναν φάκο για να ρίξουμε φως στα φωτοτρανζίστορ.
- Βάλουμε ένα πρόχειρο διαχωριστικό ανάμεσα στο RGB LED και τα τρια φωτοτρανζίστορ.Αυτό μασ βοηθάει να παρατηρήσουμε καλύτερα τις αλλαγες στην φωτεινότητα του RGB LED χωρίς να μας έρχεται στο μάτι και το φώς από τον φακό.
Εχοντας φροντίσει για τα παραπάνω παρατήρησα ότι αν αρχίσω να πλησιάζω τον φακό από τα 20εκ στα πρώτα 10εκ , οι αλλαγές είναι μικρές , +1 , +4 ..κτλ <+10 . Σε απόσταση 5εκ οι αλλαγές γίνονται ποιό μεγάλες +20,+30 ανά εκ. Και εφόσον όλα δουλεύουν καλά καθώς γίνονται αυτες οι αλλαγές παρατηρούμε ανάλογη αλλαγή της έντασης στο RGB LED.
Οσον αφορά τις χρωματικές ταινίες τις χρησιμοποιήσα ως εξής. Οταν ο φακός πλησιάζει από την πλευρά που είναι το φωτοτρανζίστορ με την μπλέ ταινία το RGB LED γίνεται περισσότερο μπλε και όταν πλησιάζω από την πλευρά που είναι το κόκκινο γίνεται κόκκινο. Δεν κατάφερα καθαρά να δω πράσινο χρώμα. Ϊσως γιατί το φωτοτρανζίστορ με την πράσινη ταινία είναι στο κέντρο. Μια ενδιαφέρον παραλλαγή θα ήταν να βαλουμε την πράσινη ταινία σε ένα απο τα άκρα.
Το βιβλίο λέει σχετικά τα εξής: The red filter passes only red light, the green filter passes only green light, and the blue filter passes only blue light. This allows you to detect the relative color levels in the light that hits your sensors.
Δεν κατάλαβα καλά τι θέλει να πεί εδώ και ούτε λέει το βιβλίο πώς να δοκιμάσουμε φως με διαφορετική ποσότητα πχ μπλε ή κοκκινου.
β. Προγραμματισμός
Άσκ5 (έλεγχος σερβοκινητήρα)
Ελεγχος σερβοκινητήρα μέσω ποτενσιομετρου.
α. Στήσιμο κυκλώματος
@ yt/Arduino/05 Starter Kit: Mood Cue (επίδειξη της άσκησης από το επίσημο κανάλι του εγχειρήματος arduino). Ενω εξηγεί καλά τη τοποθέτηση κ καλωδιωση του ποτενσ δεν εξηγεί μια μικρή λεπτομέρεια που είναι χρήσιμη για την σύνδεση του σερβοκ με την πλακέτα. Χρειάζεται μια μικρή μετατόπιση των jumpers πάνω στα pinheaders → δείτε @ στο 4.00
Οι σερβοκινητήρες είναι ένας ειδικός τύπος κινητήρα που δεν περιστρέφεται κυκλικά αλλά μετακινείται σε μια συγκεκριμένη θέση και παραμένει εκεί μέχρι να τους πείτε να κινηθούν ξανά. Οι σερβομηχανισμοί συνήθως περιστρέφονται μόνο 180 μοίρες (μισό κύκλο).
Το βιντεάκι είναι χαμηλής ανάλυσης γιαλόγους οικονομίας αποθ.χώρου.
β. Προγραμματισμός
'Sketch' είναι το όνομα που χρησιμοποιεί το Arduino για ένα πρόγραμμα. Είναι η μονάδα κώδικα που μεταφορτώνεται και εκτελείται σε μια πλακέτα Arduino.
Τα ΄sketch' είναι γραμμένα σε μια γλώσσα που αποτελεί απλούστευση της C.
Για να έχουμε πρόσβαση σε ειδικό υλικό χρειαζόμαστε για ευκολία πρόσβαση σε σχετικές βιβλιοθήκες. Ετσι στο πρόγραμμα αυτό για να προγραμματίσουμε τον σερβοκινητήρα πρεπει στην αρχή του 'Sketch' να συμπεριλάβουμε την σχετική @ βιβλιοθήκη . Αυτό θα γίνει με τις παρακάτω εντολές:
#include <Servo.h> Servo myServo;
γ. Παραλλαγές
Αυτόματη αύξηση της γωνίας
Ποιό απλό παράδειγμα , (χωρίς ποτενσιόμετρο) που με ένα απλό βρόγχο αυξάνουμε ανά δεκα τη γωνία περιστροφής του σερβοκ.
void loop() {
Serial.print(", angle: ");
Serial.println(angle);
myServo.write(angle);
delay(600);
angle = angle + 10;
if (angle == 180)
angle = 0 ;
}









