Sunday, December 11, 2011

Arduino Mega 1280/2560 help & tips


Το Arduino mega έχει κάποιες διαφορές με τα προηγούμενα και είναι πρόβλημα γιατί τα περισσότερα tutorial αναφέρονται στο Uno ή στο Duemilanove. Επίσης υπάρχει και ένα πρόβλημα με τα shields που απευθύνονται για αυτές τις υλοποιήσεις.

Pinout:
Αρχικά, τα πινς του mega είναι διαφορετικά από των υπόλοιπων. Καλό είναι να έχετε κατά νου την αντιστοιχία που υπάρχει. Βασικό είναι το γεγονός ότι τα πινς SPI που χρειάζονται για προγραμματισμό και για shields όπως το Ethernet δεν είναι τα ίδια. Ενώ λοιπόν το shield κουμπώνει πάνω στο mega στις μπροστά υποδοχές, δεν δουλεύει.
Από εδώ με την αντιστοιχία των πινς έχουμε ότι:
  • MISO - 50 (και όχι το αντίστοιχο 12 για uno,duemilanove)
  • MOSI - 51 (αντί για 11)
  • SCK - 52 (αντί για 13)
  • SS - 53 (αντί για 10)
Άρα εάν στον κώδικά μας δεν περιέχεται η βιβλιοθήκη ' pins_arduino.h ' που φροντίζει να κάνει τις αλλαγές για το mega, πρέπει να βρούμε στο κώδικα τις αντίστοιχες καταχωρήσεις και να τις αλλάξουμε. Είναι της μορφής ' #define MISO 12 ' και να κάνουμε τις αντίστοιχες αλλαγές. Μπορεί να χρειαστεί πέρα από τον αυτό καθαυτό κώδικα να αλλάξουμε και βιβλιοθήκες που χρησιμοποιεί το πρόγραμμά μας και δεν περιέχουν το ' #include "pins_arduino.h" '.




Autoreset:
Για να αποτρέψουμε το autoreset στο mega πρέπει να συνδέσουμε έναν πυκνωτή 100nF και πάνω μεταξύ RESET και +5V.

Χρήση shield για Uno/Duemilanove:
Τα shileds αυτά είναι πιο μικρά αλλά μπαίνουν μια χαρά στις μπροστινές υποδοχές. Εάν δεν δουλέυουν τότε το πιο πιθανό είναι ότι χρησιμοποιούν τα SPI pins και πρέπει να τα συνδέσουμε με τα αντίστοιχα του mega. Για να το κανουμε αυτό, λυγίζουμε προς τα έξω τα 4 αντίστοιχα πινς του shield (10-13) και συνδέουμε με καλώδια τα αντίστοιχα όπως έγραψα πιο πάνω.