-
2 sketch σε arduino mega
καλησπερα.ηθελα να ρωτησω το ποσο ευκολο ειναι σε εναν arduino mega να φορτωσουμε 2 διαφορετικα sketch.φυσικα για το καθε sketch θα δηλωθουν τα αντιστοιχα pin τα οποια θα ειναι διαφορετικα για το καθενα.η πρωτη κατασκευη αφορα εναν ενισχυτη 5.1 που φτιαχνω και η δευτερη ειναι διακοπτης με ρελε για την επιλογη ηχειων.
η ο κωδικας για την κατασκευη του ενισχυτη ειναι στην παρακατω σελιδα https://daacwaves.blogspot.com/2021/...emote-kit.html και για την δευτερη κατασκευη με τα ρελε ειναι εδω https://www.instructables.com/Arduino-Audio-Switch/
ποσο ευκολο ειναι να τα φορτωσω και τα δυο σε εναν arduino mega??
-
το να συγχωνεύσεις 2 διαφορετικα sketch σε ένα γίνεται εφόσον:
--η μνήμη του mega τα χωράει(δεν είδα μέγεθος δεύτερου scetch)
--να σε φτάσουν οι ακροδέκτες πινς του mega από την μια και από την άλλη αν τα 2 sketch χρησιμοποιούν κοινούς ακροδέκτες,πρέπει να αλλάξεις τους κοινούς με διαθέσιμους,με ότι αυτό σημαίνει για τον κώδικα και αλλαγές αυτού.
--δεν περιέχει π.χ εντολή ή πολλές εντολές καθυστέρησης delay το πρώτο sκetch,που μπορεί να δημιουργήσει προβλήματα στην ταχύτητα εκτέλεσης(αξιοπιστία) του δεύτερου sκetch.
--να μπορέσεις να τα συχγωνεύσεις σωστά,ώστε να καταφέρεις τον κώδικα να δουλέψει.
Το χω κάνει 2 φορές και δούλεψε,αλλά χρειάστηκε να αφιερώσω πολύ χρόνο..
-
ανδρεα καλησπερα.για κατασκευη του ενισχυτη τα πιν ειναι:
- lcd LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // RS,E,D4,D5,D6,D7
-για τα υπολοιπα πιν,rotary-button
#define sw01 9 // SW
#define sw02 11 // DT
#define sw03 10 // CLK
#define sw04 A0 // Input
#define sw05 A1 // Mute
#define sw06 A2 // Power
#define sw07 13 // RELE
#define sw08 12 // DISPLAY
τωρα για την κατασκευη με τα ρελε
// PIN 2 to CH8 relay (amp left channel)
// PIN 3 to CH7 relay (amp right channel)
// PIN 4 to CH6 relay (amp center channel)
// PIN 5 to CH5 relay (amp surround left channel)
// PIN 6 to CH4 relay (amp surround right channel)
// PIN 7 to CH3 relay (amp LFE channel)
// PIN 8 to CH2 relay (amp GND)
// PIN 9 to CH2 relay (amp GND)
const int buttonPin = 11;
const int ledPin1 = 10;
const int ledPin2 = 12;
const int ledPin3 = 13;
φυσικα τα πιν μπορω να τα αλλαξω.ανεβαζω αυτα οπως τα εχει το προγραμμα
-
// ARDUINO audio switch
// by ACMECORPORATION
// Switch audio between 5.1 ch, 2.1 ch or 2 ch
// pin numbers:
// PIN 2 to CH8 relay (amp left channel)
// PIN 3 to CH7 relay (amp right channel)
// PIN 4 to CH6 relay (amp center channel)
// PIN 5 to CH5 relay (amp surround left channel)
// PIN 6 to CH4 relay (amp surround right channel)
// PIN 7 to CH3 relay (amp LFE channel)
// PIN 8 to CH2 relay (amp GND)
// PIN 9 to CH2 relay (amp GND)
const int buttonPin = 11;
const int ledPin1 = 10;
const int ledPin2 = 12;
const int ledPin3 = 13;
int buttonPushCounter=0;
int buttonState = 0;
int lastButtonState = 0;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(buttonPin, INPUT);
for(int a=2;a<10;a++){
pinMode(a, OUTPUT);
}
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState){
buttonPushCounter++;
if (buttonPushCounter>2) {
buttonPushCounter=0;
}
if (buttonPushCounter == 1){
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin3, LOW);
for(int a=2;a<7;a++){
digitalWrite(a, LOW);
}
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
delay(200);
}
if (buttonPushCounter == 2){
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin1, LOW);
for(int a=2;a<9;a++){
digitalWrite(a, HIGH);
}
digitalWrite(9, LOW);
delay(200);
}
if (buttonPushCounter == 0){
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
for(int a=2;a<9;a++){
digitalWrite(a, LOW);
}
delay(200);
}
delay(250);
}
}
-
Η πρώτη κατασκευή είναι με ATmega328.Δεν έχουν την ίδια αντιστοίχιση το atmega328 με τον mega.Δηλαδή ο ακροδέκτης π.χ clk του arduino atmega328 δεν είναι στον ίδιο αριθμό πιν με το arduino mega.
Για μένα ξεκίνα και φτιάξε μόνο το πρώτο κύκλωμα με το arduino mega,αφού κάνεις ότι αλλαγές χρειάζεται στον κώδικα και στα πινς.
Άν δουλέψει το πρώτο ,τότε και μόνο τότε φτιάξε και το δεύτερο κύκλωμα ξανά μόνο του και εννοείται να δηλώσεις ακροδέκτες που δεν είναι κοινοί και στα 2 κυκλώματα.
Όταν σου δουλέψουν και τα 2 κυκλώματα μόνα τους ξεκίνα την συγχώνευση του κώδικα και όπου συναντήσεις πρόβλημα τον ανεβάζεις και σε βοηθάμε.
-
Θα χρειαστείς ακόμη 12 pin ελεύθερα στο mega. Δεν κάθομαι να το δω τώρα, αλλά νομίζω ότι σε παίρνει άνετα.
θέλει μια προσοχή με τα ρελέ των καναλιών που έχει τα pins σε αύξουσα σειρά και χρησιμοποιεί το for για να τα ελέγξει.
Το ξεκίνησες ποιο πάνω, Μετά τις δηλώσεις των #define sw δήλωσε τα πιν του audio switch,
μέσα στο setup() ενεργοποιήσετα και στο loop() τα ελέγχεις.
-
Η κατασκευή δεν έχει πολλές απαιτήσεις, πιστεύω ότι μπορεί να γίνει και με ένα Atmega328, το πολύ να χρειαστεί και ένα MCP23017
-
καλημερα.τις κατασκευες τις εχω φτιαξει με εναν arduino nano ξεχωριστα για τηνν καθε μια κατασκευη και δουλευουν τελεια.απλα επειδη εχω ενα arduino mega2560 ελεγα να τα μαζεψω τις δυο κατασκευες σε μια
-
Το καλύτερο είναι να μπουν όλα σε μια δική σου πλακέτα και να πιάνουν τον μικρότερο δυνατόν χώρο.
Ο arduino Mega είναι πολύ πιο ισχυρός και πιο ακριβός από 2 arduino nano και είναι κρίμα να χρησιμοποιηθεί για μια τόσο απλή κατασκευή.
Πιστεύω πως μπορεί να χρησιμοποιηθεί ένα μόνο arduino nano (ή ακόμη καλύτερα ένα atemega328 ). Για τις εξόδους I/O που χρειάζεσαι μπορείς να κάνεις οικονομία ή/και επέκταση εξόδων. Για παράδειγμα αν στην οθόνη βάλεις ένα module σειριακής επικοινωνίας χρειάζεσαι μόνο 2 ποδαράκια για την οθόνη (και λίγη μετατροπή στο software). Τα buttons μπορείς να τα βάλεις (πάλι με κατάλληλο software) σε ένα μόνο ποδαράκι. Επέκταση Ι/Ο μπορείς να κάνεις με ειδικά πολοκληρωμένα όπως π.χ. το MCP23017 (+16 Ι/Ο) ή με sift register όπως το ΜC74ΗC595.