Για θέματα γενικού ενδιαφέροντος, εκτός μηχανοκίνητων...
Άβαταρ μέλους
By fubar.gr
#362071
21 quadra έγραψε:Arduino Production Factory Tour

https://www.youtube.com/watch?v=21hPmFNYUNo


:offtopic:

Αυτό το δράπανο που δείχνει στην αρχή λειτουργεί σε απίστευτα υψηλές στροφές, ειδικά για τις πιό μικρές τρύπες δουλέυει στις 150 με 180 χιλιάδες. Τα τρυπανάκια είναι φτιαγμένα απο tungsten carbide, και παρόλα αυτά καταστρέφονται γρήγορα, γιατι το υπόστρωμα της πλακέτας είναι fiberglass, οπότε είναι σαν να τρίβεις τη μύτη του τρυπανιου σε γυαλόχαρτο.
Άβαταρ μέλους
By glf
#362077 Ναι και γω φουλ κινέζικο κλώνο δουλεύω, ιδίως που μεταπήδησα στο esp8266. Το τσιπάκι ένα είναι, η πλακέτα και τα περιφερειακά αλλάζουν.

Εγώ λέω όποιος θέλει να ασχοληθεί να ξέρει οτι εδώ υπάρχει υποστήριξη όπως ο fubar που δε μασάει απο ηλεκτρονικά

fubar.gr έγραψε:Μήν πάρετε το επίσημο Arduino kit. Υπάρχουν με τα μισά λεφτά arduino kit στο ebay με πιό πολλά εξαρτήματα, πχ αυτό..
Άβαταρ μέλους
By Billopoulos
#362129 Αρα παιρνεις πλακετα και περιφερειακα κλωνους και το esp8266 πχ ως τσιπ;

BTW, επειδη μιλαμε για C ως γλωσσα προγραμματισμου, οποιος θελει υλικο για να διαβασει ή να ρωτησει οποιαδηποτε απορια, ας μου στειλει ΠΜ.
Άβαταρ μέλους
By glf
#362139 το ESP8266 δεν έχει σχέση με την Ιταλική Arduino που είναι ο "επίσημος" που ξεκίνησε τη μόδα. Στο ESP έτσι κι αλλιώς κινέζικα είναι όλα.

Αυτό που είπε ο fubar και γω είναι ότι αν πάρεις Arduino από το arduino.cc που είναι το επίσημο ιταλικό site θα το πάρεις ακριβότερα από τα κινέζικα.
Και το επίσημο και το κινέζικο φοράνε ακριβώς το ίδιο chip (της εταιρίας ATMEGA).
Άβαταρ μέλους
By glf
#362143 Πηγαίνοντας προς τα.. αυτοκίνητα, να πω ότι φιλαράκι στη Θεσσαλονίκη ετοιμάζει LCD οθόνες-πολυόργανα για αγωνιστικά αυτοκίνητα με shift-light και λοιπά καλούδια.
Αντί λοιπόν να τα σκάς για stack, παίρνεις δικιά σου custom οθόνη προσαρμοσμένη στις ανάγκες σου.
Απλό ωραίο και τώρα πια δοκιμασμένο αφού τα αγωνιστικά που το φοράνε έχουν κάνει αγώνες το 2016.
Κομπλέ με το κουτί του σε 3D εκτύπωση, καλωδιώσεις προς αισθητήρες κτλ φροντισμένα και όμορφα.
Άβαταρ μέλους
By fubar.gr
#362162 Η καρδιά του Arduino UNO (η πιό συνιθισμένη παραλλαγή Arduino) είναι ο μικροελεγκτής της Atmel, ATMega328p.

Τους μικροελεγκτές γενικά τους ελέγχουμε αλλάζοντας τις δυαδικές τιμές των registers. Οι registers δέν είναι τίποτα άλλο απο μνήμες. Σε αντίθεση με την κανονική μνήμη, οπου μπορούμε να αποθηκεύουμε ότι μας καπνίσει, οι registers έχουν την ιδιαιτερότητα οτι αν τους μεταβάλλουμε τις τιμές, αλλάζει ανάλογα και η συμπεριφορά και λειτουργία του μικροελεγκτή.

Για παράδειγμα, έστω οτι θέλουμε να ρυθμίζουμε το pin 13 του Arduino (το οποίο έχει και ένα led συνδεδεμένο) έτσι ωστε να γίνει έξοδος και να το ρυθμίσουμε ως HIGH ωστε να βγάλει 5 Volt και να ανάψει το led.

Εικόνα

Το πρώτο που πρέπει να κάνουμε είναι να βρούμε σε ποιό PORT ανήκει το pin που θέλουμε. Ο μικροελεγκτής είναι 8-bit, οπότε τα pins είναι ομαδοποιημένα σε οκτάδες, PORT A, PORT B, PORT C και PORT D, δέν υπάρχει τρόπος να γίνουν adressed αλλιώς όλα μαζί.

Οπότε βλέπουμε στην εικόνα οτι το pin 13 του Arduino αντιστοιχεί στο PB5 του μικροελεγκτή, ή 5ο πιν στο PORT B.

Οπότε το πρώτο register που θα πειράξουμε είναι το DDRx (Data Direction) οπου χ είναι το ανάλογο PORT. Δηλαδή υπάρχουν 4 registers, DDRA, DDRB, DDRC και DDRD, το καθενα απο τα οποία είναι 8 bit. Η default τιμή τους ή αμέσως μετά απο reset, είναι όλα μηδενικά, δηλαδή είσοδοι. Εμείς θέλουμε να κάνουμε το 5ο pin του PORT B έξοδο και θα του δώσουμε την τιμή 1.

Οπότε η εντολή στη C είναι

Κώδικας: Επιλογή όλωνDDRB = 0b00100000;


Δηλαδή ενώ το DDRB αρχικά είναι 00000000, του δίνουμε την τιμή 00100000. Το 0b στην αρχή της τιμής σημαίνει οτι το νούμερο που ακολουθεί είναι δυαδικό (binary).

Εδώ χρειάζεται προσοχή. Τα πάντα στα ψηφιακά κυκλώματα μετρούνται απο το μηδέν, όχι απο το ένα. Επομένως τα πιν σε ένα port πάνε απο 0 εώς 7 και όχι απο 1 εώς 8. Επίσης τα bit σε ένα register μετρούνται απο το LSB (least significant bit) προς το MSB (most significant bit) δηλαδή απο δεξιά προς τα αριστερά.

Έτσι το pin PB5 είναι ουσιαστικά το 6ο και όχι το 5ο. Οπότε βρίσκουμε το 6ο bit απο δεξια προς τα αριστερά και το κάνουμε 1.

Η παραπάνω εντολή θα μπορούσε να γραφτεί και έτσι:

Κώδικας: Επιλογή όλωνDDRB = 0x20;


Το 0x σημαίνει οτι η τιμή που ακολουθεί είναι δεκαεξαδική, και το δυαδικό 100000 είναι ίσο με 20 στο δεξαεξαδικό.

Το πρόβλημα εδώ είναι οτι αναγκαστικά πρέπει να δώσουμε τιμές σε όλα τα bit. Οπότε βάλαμε άσσο στο 6ο bit και μηδενίσαμε όλα τα υπόλοιπα. Όμως τί γίνεται αν τα υπόλοιπα bit έχουν κάποια τιμή απο πρίν, οπότε δέν πρέπει να τα πειράξουμε?

Εδώ βοηθούν τα λεγόμενα bitwise operations.

Οπότε η εντολή γίνεται:
Κώδικας: Επιλογή όλωνDDRB = DDRB | 0b00100000;


Το παραπάνω σημαίνει οτι παίρνουμε ότι τιμή είχε πρίν το register DDRB και το κάνουμε bitwise OR με την τιμή 00100000. Η τιμή αυτή είναι η "μάσκα". Όπου έχει 0 τότε αφήνεται απείραχτο το αντίστοιχο bit του DDRB, ενώ όπου η μάσκα έχει 1 τότε το συγκεκριμένο bit γίνεται 1.

Έτσι αν το DDRB είχε αρχικά τιμή 10000100, η τελική τιμή θα γίνει 10100100, δηλαδή θα αλάξουμε το επιθυμητό bit χωρίς να πειράξουμε τα υπόλοιπα.

Αντίστοιχη λογική έχει το subnet mask (πχ 255.255.0.0) στις διευθύνσεις IP. 255 σημαίνει 8 άσσοι στο δυαδικό. Η διαφορά είναι οτι εκεί γίνεται η λογική πράξη bitwise AND.

Εδώ είναι ένα online bitwise calculator: http://www.miniwebtool.com/bitwise-calculator/

Τώρα αφού με τα πολλά ρυθμίσαμε το pin 13 του arduino σαν έξοδο, πρέπει να το ρυθμίσουμε ώς HIGH για να βγάλει τάση και να ανάψει το led.

Το register που ελέγχει αν μια έξξοδος είναι HIGH ή LOW είναι πάλι με την προηγούμενη λογική το PORTx.

Οπότε η εντολή για να ενεργοποιήσουμε το pin 5 του PORT B χωρίς να πειράξουμε τα υπόλοιπα είναι:
Κώδικας: Επιλογή όλωνPORTB = PORTB | 0b00100000;


Στο datasheet του κάθε μικροελεγκτή περιγράφονται αναλυτικά όλα τα registers, ποιές είναι οι default τιμές τους, η διεύθυνση στην μνήμη του μικροελεγκτη και αν μπορούμε να γράψουμε ή είναι μόνο για διάβασμα:
Εικόνα
Άβαταρ μέλους
By fubar.gr
#362165 Εκεί που θέλω να καταλήξω είναι οτι το να προγραμματίζεις μικροελεγκτές, ενώ δέν είναι πυρηνική επιστήμη, είναι αρκετά μπερδεμένο και έχει μια αρκετά απότομη καμπύλη μάθησης η οποία είναι σχεδόν βέβαιο οτι θα αποθαρύνει τους περισότερους.

Επίσης το να διαβάσεις το datasheet δέν βοηθάει ιδιαίτερα. Τα datasheet αυτά είναι πολύ πυκνογραμμένα και απευθύνονται σε αυτούς που ήδη ξέρουν απο μικροελεγκτές, έτσι ωστε να βρίσκουν γρήγορα την πληροφορία που θέλουν.

Εδώ είναι η μαγκιά του Arduino. Απο τη μία σου δίνει έτοιμη την πλακέτα με το μικροελεγκτή και όλα τα υπόλοιπα απαραίτητα (τροφοδοσία, διασύνδεση μέσω USB, headers για εύκολες συνδέσεις), οπότε είναι εντελώς plug and play στον υπολογιστή. Απο την άλλη, έχουν κάνει πάρα πολύ δουλειά με τη γλώσσα προγραμματισμού Wiring. Αυτό δέν είναι ακριβώς καινούρια γλώσσα προγραμματισμού, αλλά ένα σύνολο βιβλιοθηκών και συναρτήσεων με τις οποίες κρύβεται η πολυπλοκότητα με τα bit και τους registers και γίνεται ΄πολύ πιό εύκολος ο προγραμματισμός.

Δηλαδή με τη Wiring αυτό που κάναμε προηγουμένως γίνεται με τις εξής δύο γραμμές κώδικα:

Κώδικας: Επιλογή όλωνpinMode(13, OUTPUT);
digitalWrite(13, HIGH);


Ούτε να ψάχνουμε σε ποιό port ανήκει το pin, ούτε να μετράμε bits και άλλα βαρετά και δύσκολα πράγματα.

Οπότε με το Arduino ο προγραμματισμός ενός μικροελεγκτή γίνεται πολύ πιό προσιτός στον καθένα.
Άβαταρ μέλους
By fubar.gr
#362167
glf έγραψε:Αυτό είναι ότι πρέπει για να αποθαρρύνει κάποιον να ξεκινήσει :)


Έχεις δίκιο, απλά ήθελα να δείξω τη διαφορά ενός κλασσικού μικροελεγκτή απο το Arduino
Άβαταρ μέλους
By glf
#362180 Α οκ δεν κατάλαβα οτι συνέχιζε. Αυτό πρέπει να λέμε, οτι έχει γίνει παιχνιδάκι.
Μάλιστα έχουν βγει και εργαλεία προγραμματισμού με... τουβλάκια κώδικα πιυ τα ενώνεις στην οθόνη μεταξύ τους!
Τις μικρές σε τέτοια θα τις πρωτοδειξω προγραμματισμό.

Σοβαρά είναι ΠΑΝΕΥΚΟΛΟ να αρχίσεις. Και μετά κολυμπάς σε όσο βάθος θες.
Άβαταρ μέλους
By axel12p
#362230 Η Ελληνική υλοποίηση
http://www.cubescoding.com/

και η αντίστοιχη της Fischer Price
Άβαταρ μέλους
By fubar.gr
#362275
axel12p έγραψε:Αγοράζοντας το "γνήσιο" Arduino, δεν ενισχύεις σε ένα βαθμό και τους δημιουργούς;


Το Arduino φτιάχτηκε εξαρχής ώς open source, με δημοσιευμένα τα αναλυτικά σχέδια, ωστε ο καθένας να μπορεί να φτιάξει το δικό του, οπότε μάλλον δέν ήταν στους σκοπούς των δημιουργών το να αποκομίσουν οικονομικό όφελος απο το hardware, και οι κλώνοι φυσικά δέν είναι παράνομοι.

Οπότε αν θέλεις να στηρίξεις τους δημιουργούς ίσως καλύτερα θα ήταν να κάνεις ένα donation, υπάρχει αυτή η δυνατότητα στο site τους.

Βέβαια τώρα ποιός θα πάρει τί απο το donation είναι ένα θέμα, γιατι μέχρι πρόσφατα τουλάχιστον είχαν γίνει απο 20 χωριά χωριάτες, με αλληλομηνύσεις, διάσπαση της εταιρίας κτλ.
Άβαταρ μέλους
By glf
#364270 Εικόνα
Εικόνα

Αυτός είναι κεντρικός θερμοστάτης με οθόνη αφής. Μετρά με το δικό του αισθητήρα την πρώτη ζώνη ενώ ο ασύρματος αισθητήρας στέλνει τις τιμές της δεύτερης απομακρυσμένης ζώνης με ραδιοκύματα.
Ο κεντρικός θα ενεργοποιεί ηλεκτροβάνα σε όποια ζώνη πρέπει να θερμανθεί.
Οι ρυθμίσεις κάθε ζώνης γίνονται στην οθόνη αφής.
Στο δεξί κουτάκι θα δείχνει τον καιρό και πατώντας το θα βγάζει και πρόγνωση 3 ημερών.
Το κατασκευαστικό ευτυχώς τελείωσε, προγραμματισμός μένει.


Εικόνα
Εικόνα
Αυτός είναι o ασύρματος αισθητήρας θερμοκρασίας που έχει OLED οθόνη ενδείξεων, συνδέεται στο internet για να δείξει τον καιρό στην περιοχή απο μετεωρολογικό site και ενημερωμένη ώρα ΝΤP.
Στέλνει τη μέτρηση με ραδιοκύματα σε ελεύθερη συχνότητα 433.92 MHz.

Εικόνα

Ο πομπός του είναι στα mW ..
Αφού το προγραμμάτισα δοκιμάσαμε να το μετρήσουμε στο Πανεπιστήμιο με αναλυτή φάσματος και μας έδειξε τη συχνότητα εκπομπής. Έκανα δοκιμές και με το φορητό vhf μου, ωραία εργαλεία...