ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ: ΜΙΚΡΟΕΛΕΓΚΤΕΣ

Σχετικά έγγραφα
ΕΡΓΑΣΤΗΡΙΟ 6 ΟΔΗΓΗΣΗ ΑΠΕΙΚΟΝΙΣΕΩΝ SSD ΚΑΙ LCD

Ενσωματωμένα Συστήματα

Μ.Π.Σ. «ΠΡΟΗΓΜΕΝΕΣ ΜΕΘΟΔΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΡΟΙΟΝΤΩΝ ΑΠΟ ΞΥΛΟ» Μάθημα: Σχεδίαση και Εφαρμογές Διαδραστικών Συστημάτων. Διδάσκοντας: Α.

ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ARDUINO

ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016)

Arduino Teachers Workshop

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ

Παραδείγµατα χρήσης του µικροελεγκτή Arduino Εφαρµογές για το εργαστήριο Μέρος 2 ο :Οδήγηση Κινητήρων DC(PM)

2. Δήλωση μεταβλητών. #include <avr/io.h> #include <util/delay.h> unsigned char i=0xa0; register unsigned char i asm("r3");

Μάθημα 2 Δραστηριότητα 2: Δημιουργώντας το Μετεωρολογικό Σταθμό. Επανεξέταση των βασικών εννοιών της C και του προγραμματισμού.

Διαδικασιακός Προγραμματισμός

ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΕΛΕΓΚΤΩΝ

ΡΟΜΠΟΤΙΚΗ ΜΕ ARDUINO - ARDUINO ΚΑΙ ΗΧΟΣ II. Δημιουργός: Δρ.Αθανάσιος Μπαλαφούτης Επιβλέπων: Πετεινάτος Ηλίας Υποψήφιος Διδάκτωρ

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 1. Προγραμματισμός Φυσικών Συστημάτων. Νέα Ψηφιακά Αντικείμενα

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

Ενσωματωμένα Συστήματα

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

για τις ρυθμίσεις LabView μέσα από το κανάλι και του καλωδίου USB.

3 ο Εργαστήριο Μεταβλητές, Τελεστές

ΑΣΚΗΣΗ ΜHΧΑΤΡΟΝΙΚΗΣ. Τέλος όταν εισάγετε ένας σωστός συνδυασμός η ένδειξη του display να μηδενίζετε.

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

ΕΝΟΤΗΤΑ 10: ΟΔΗΓΗΣΗ ΚΙΝΗΤΗΡΩΝ

Κωνσταντίνος Γκαλονάκης. Arduino: Προγραμματισμός στην πράξη

FOSSCOMM ο Συνέδριο Κοινοτήτων Ανοιχτού Λογισμικού Σάββατο 20 Απριλίου Ομάδα Σχολής Ικάρων Εργαστήριο Arduino

Εφαρμογές Σειριακής Επικοινωνίας

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 8. Μετρώντας Επιτάχυνση με το Accelerόμετρο (ADXL 335) Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

10. Πληκτρολόγιο matrix 4x4

Απλή Δομή Επιλογής. Ο κώδικας. //με χρήση μεταβλητών. delay (3000);

Δομημένος Προγραμματισμός (ΤΛ1006)

Σχεδίαση Συστημάτων με τον Arduino Μάθημα 3. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Η Έννοια του Global Positioning System

ΕΝΟΤΗΤΑ 14 Πρωτόκολλα Επικοινωνίας

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017)

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO. Υποψήφιος Διδάκτωρ

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Έλεγχος κινητήρα συνεχούς ρεύματος με τρανζίστορ και Arduino

ΔΡΑΣΤΗΡΙΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO- 01a

Πρόγραμμα αυτόματης ανάγνωσης και βαθμολόγησης απαντήσεων σε εξέταση με την μέθοδο πολλαπλών επιλογών..

Πλακέτα Arduino. 1ο ΕΠΑΛ Περάματος - 7ο ΕΚ Πειραιά

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

ΔΙΔΑΚΤΙΚΟ ΣΕΝΑΡΙΟ ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΔΙΕΞΑΓΩΓΗΣ ΠΑΙΧΝΙΔΙΟΥ ΕΡΩΤΗΣΕΩΝ/ΑΠΑΝΤΗΣΕΩΝ ΜΕ ΧΡΗΣΗ ARDUINO - QUIZ GAME ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 3

Project 5: Συνθέτοντας μουσική

Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων

Writing kernels for fun and profit

Δομημένος Προγραμματισμός

Η προσπάθεια αυτή έγινε στο πλαίσιο του προγράμματος πρακτικής άσκησης φοιτητών του Πανεπιστημίου Πατρών ως φοιτήτρια του Τμήματος της Επιστήμης των

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

«ΥΛΟΠΟΙΗΣΗ ΑΣΥΡΜΑΤΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ ΜΕ ΧΡΗΣΗ ΜΙΚΡΟΕΛΕΓΚΤΩΝ» ΒΥΣΑΝΣΙΩΤΗΣ ΣΤΑΥΡΟΣ Α.Μ ΚΑΡΒΟΥΝΙΔΟΥ ΑΓΓΕΛΙΚΗ Α.Μ

Το κύκλωμα σε breadboard

Προγραμματισμός Η/Υ (ΤΛ2007 )

Σχεδίαση Συστημάτων με τον Arduino Μάθημα 3. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Η Έννοια του Global Positioning System

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

12. Διακοπές Interrupts (IRQ)

ΡΟΜΠΟΤΙΚΗ ΜΕ ARDUINO - ARDUINO ΚΑΙ ΕΙΚΟΝΑ. Δημιουργός: Δρ.Αθανάσιος Μπαλαφούτης Επιβλέπων: Πετεινάτος Ηλίας Υποψήφιος Διδάκτωρ

ΕΝΟΤΗΤΑ 6 LCD ΟΘΟΝΕΣ

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 1 Hello World

Δομημένος Προγραμματισμός (ΤΛ1006)

Βιβλιοθήκη για οθόνη LCD

Modbus basic setup notes for IO-Link AL1xxx Master Block

Δομημένος Προγραμματισμός (ΤΛ1006)

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Η γλώσσα προγραμματισμού C

Εισαγωγή στη Verilog με το ISE

2. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΩΝ ΘΥΡΩΝ ΕΙΣΟ ΟΥ/ΕΞΟ ΟΥ ΤΟΥ PIC16F877-ΑΡΙΘΜΗΤΙΚΕΣ ΕΝΤΟΛΕΣ

1. Περιβάλλον εργασίας παραδείγματα σύνταξης

Προγραμματισμός Ρομπότ

Γλώσσες Προγραμματισμού

Ενσωµατωµένα Συστήµατα

ΗΜΕΡΟ ΜΗΝΙΑ: Σάββατο 28/03/2015 Arduino Day ΤΑΞΗ: Ομάδα Υδρορομποτικής 7ου Γ.Ε.Λ. Τρικάλων. ΚΑΘΗΓΗΤΗΣ: Σπάχος Βασίλειος, ΠΕ19 Πληροφορικής

Γνωριμία με το Arduino

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

Εργαστηριακές σημειώσεις για το μάθημα: «Εισαγωγή στην Μηχατρονική»

Αντικειµενοστρεφής Προγραµµατισµός

Εισαγωγή στον Προγραμματισμό

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΕΝΟΤΗΤΑ 13 Ο ΔΙΑΥΛΟΣ I2C

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα

Διάλεξη 6: Δείκτες και Πίνακες

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

1o ΕΠΑΛ- Ε.Κ. Συκεών -Τομέας: Ηλεκτρονικής, Ηλεκτρολογίας και Αυτοματισμού Εκπαιδευτικοί: Μπουλταδάκης Στέλιος Μαυρίδης Κώστας

//στο pin 3 του μικροελεγκτή συνδέουμε το control pin του ρελέ. WRITE 'I am on' στο SOCKET // λέω στον client ότι άναψα τη λάμπα

Συλλογή & Επεξεργασία Δεδομένων Εξαμηνιαία ΡομποΚαθαριστής Μέρος Β : Το Πρόγραμμα. Σχεδίαση Συστήματος Πραγματικής Εφαρμογής (Prototyping).

Εισαγωγή στον Προγραμματισμό

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές. Εισαγωγή στο Arduino. Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Δεδομένα, τελεστές, είσοδος/έξοδος

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 5 - Editor

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

BM1385. Bitcoin Hash ASIC Datasheet. Bitmain Technologies Limited

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Transcript:

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ: ΜΙΚΡΟΕΛΕΓΚΤΕΣ Ι. Έλληνας Δεκέμβριος 2018

Άσκηση 1 Να συνδεθεί ο Arduino Uno με το LED matrix 8X8 μέσω SPI. Να γραφτεί πρόγραμμα το οποίο θα δημιουργεί μετρητή από 0 έως 9. MOSI (pin 11) pin 3 of MAX 7219 SCLK (pin 13) pin 5 of MAX 7219 SS (pin 10) pin 4 of MAX 7219 #include <Arduino.h> #include <SPI.h> #define SS_PIN 10 // MAX7219 registers #define MAX7219_NOOP #define MAX7219_DIGIT0 #define MAX7219_DIGIT1 #define MAX7219_DIGIT2 #define MAX7219_DIGIT3 #define MAX7219_DIGIT4 #define MAX7219_DIGIT5 #define MAX7219_DIGIT6 #define MAX7219_DIGIT7 #define MAX7219_DECODEMODE #define MAX7219_INTENSITY #define MAX7219_SCANLIMIT #define MAX7219_SHUTDOWN #define MAX7219_TEST 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xA 0xB 0xC 0xF 2

char letter; String text = "0123456789"; const byte cp437_font [][8] PROGMEM = { { 0x3E, 0x7F, 0x71, 0x59, 0x4D, 0x7F, 0x3E, 0x00, // '0' { 0x40, 0x42, 0x7F, 0x7F, 0x40, 0x40, 0x00, 0x00, // '1' { 0x62, 0x73, 0x59, 0x49, 0x6F, 0x66, 0x00, 0x00, // '2' { 0x22, 0x63, 0x49, 0x49, 0x7F, 0x36, 0x00, 0x00, // '3' { 0x18, 0x1C, 0x16, 0x53, 0x7F, 0x7F, 0x50, 0x00, // '4' { 0x27, 0x67, 0x45, 0x45, 0x7D, 0x39, 0x00, 0x00, // '5' { 0x3C, 0x7E, 0x4B, 0x49, 0x79, 0x30, 0x00, 0x00, // '6' { 0x03, 0x03, 0x71, 0x79, 0x0F, 0x07, 0x00, 0x00, // '7' { 0x36, 0x7F, 0x49, 0x49, 0x7F, 0x36, 0x00, 0x00, // '8' { 0x06, 0x4F, 0x49, 0x69, 0x3F, 0x1E, 0x00, 0x00, // '9' ; void sendspi( byte address, byte value) { digitalwrite(ss_pin, LOW); // Start transfer SPI.transfer(address); // Send address SPI.transfer(value); // Send value digitalwrite(ss_pin, HIGH); // Finish transfer. Serial.begin(9600); pinmode(ss_pin, OUTPUT); digitalwrite(ss_pin, HIGH); SPI.beginTransaction(SPISettings(16000000, MSBFIRST, SPI_MODE0)); SPI.begin(); sendspi(max7219_test, 0x00); // Finish test sendspi(max7219_decodemode, 0x00); // Disable BCD mode sendspi(max7219_intensity, 0x00); // Lowest intensity sendspi(max7219_scanlimit, 0x07); // Scan all digits sendspi(max7219_shutdown, 0x01); // Turn on chip Serial.println("Start of MAX7219 operation"); void loop() { for (int i=0;i<text.length();i++){ letter=text.charat(i)-0x30; for (int col = 0; col < 8; col++) { byte b=pgm_read_byte(&cp437_font[letter] [col]); sendspi(col+1, b); delay(2000); Σημείωση: letter=text.charat(i) 0x30; Το ( 0x30) έχει τοποθετηθεί επειδή οι αριθμητικοί χαρακτήρες έχουν μετατοπιστεί στην αρχή του πίνακα ASCII (αντί δηλαδή να έχουν τιμές από 0x30 έως 0x39, έχουν τιμές από 0x00 έως 0x09). 3

Να συμπληρωθεί το πρόγραμμα έτσι ώστε να δείχνει στην οθόνη τους δεκαεξαδικούς αριθμούς 0 έως F. Άσκηση 2 Να συνδεθεί ο Arduino Uno με την 0.96 OLED οθόνη 128Χ64 pixels (SSD1306) χρησιμοποιώντας I2C. VCC + 5V SCL A5 Arduino I2C SCL SDA A4 Arduino I2C SDA RES RESET Arduino DC Ground (Address = 0x3C) Χρησιμοποιούνται οι βιβλιοθήκες Adafruit SSD1306 και Adafruit GFX (για γραφικά). Ενεργοποίηση του module #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin (or -1 if Arduino reset pin) Adafruit_SSD1306 display(screen_width, SCREEN_HEIGHT, &Wire, OLED_RESET); display.begin(ssd1306_switchcapvcc, 0x3C); //device address=0x3c display.display(); //show memory to display void loop() { Ένδειξη κειμένου #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin (or -1 if Arduino reset pin) Adafruit_SSD1306 display(screen_width, SCREEN_HEIGHT, &Wire, OLED_RESET); display.begin(ssd1306_switchcapvcc, 0x3C); //device address=0x3c display.cleardisplay(); display.settextcolor(white); display.setcursor(35,30); display.println("hello World!"); display.display(); //show memory to display void loop() { 4

Αλλάξτε τις συντεταγμένες αρχής του κειμένου Χρησιμοποιήστε την εντολή: display.settextcolor(black, WHITE); Χρησιμοποιήστε την εντολή μεγέθυνσης: display.settextsize() με τιμές από 1 έως 6. Χρησιμοποιείστε την εντολή: display.write(character ASCII code) και γράψτε το Hello World! Ένδειξη γεωμετρικών σχημάτων display.drawline(startx, starty, endx, endy, color) display.width() display.height() Σχεδίαση διαγώνιων γραμμών: display.drawline(0,0,display.width()-1, display.height()-1, WHITE); display.drawline(display.width()-1,0,0, display.height()-1, WHITE); Σχεδίαση τετραγώνου: display.drawrect(upperleftx, upperlefty, width, height, color) display.fillrect(upperleftx, upperlefty, width, height, WHITE) display.drawroundrect(upperleftx, upperlefty, width, height, cornerradius, color) display.drawfillroundrect(upperleftx, upperlefty, width, height, cornerradius, WHITE) display.drawcircle(centerx, centery, radius, color) Σχεδίαση τριγώνου: display.drawtriangle(poin1x, point1y, point2x, point2y, point3x, point3y, color) display.filltriangle(poin1x, point1y, point2x, point2y, point3x, point3y, WHITE) Σημείο: display.drawpixel(pixelx, pixely, color) 5

Ένδειξη εικόνων #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(screen_width, SCREEN_HEIGHT, &Wire, OLED_RESET); static const unsigned char PROGMEM logo_bmp[] = { B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11111111, B00110011, B10011111, B00011111, B11111100, B00001101, B01110000, B00011011, B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000 ; display.begin(ssd1306_switchcapvcc, 0x3C); //device address=0x3c display.cleardisplay(); display.drawbitmap(32,16,logo_bmp, 16, 16, WHITE); display.display(); //show memory to display void loop() { // loop can be empty for now Για να δείτε όλες τις δυνατότητες της βιβλιοθήκης επιλέξτε από τα παραδείγματα της βιβλιοθήκης Adafruit, το ssd1306_128x64_i2c.ino. Παρατηρήστε πως απεικονίζονται οι χαρακτήρες και εικόνες bitmap. Πρέπει στο πρόγραμμα να θέσουμε: #define OLED_RESET 1 και if (!display.begin(ssd1306_switchcapvcc, 0x3C)) 6