INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Mega und mehrere Shields / I2C
15.01.2015, 14:32
Beitrag #1
Arduino Mega und mehrere Shields / I2C
Hallöchen.

Ich habe mich vor 3 Tagen ebenfalls vom Arduino Fieber anstecken lassen.
Nun habe ich mit einiges an Shields und verschiedene Arduino Versionen besorgt.

Bisher habe ich es geschaft ein LCD 16*2 , ein Relais shield mit 4 Relais sowie eine kleine Tastatur Matrix anzuschließen. Ich kann die Relais nun über die Tastatur ein/ausschalten. Alle Änderungen werden auch auf dem Display ausgegeben. Für mich ein guter Fortschritt nach 3 Tagen.

Nun möchte ich aber an das selbige noch 1 RTC sowie ein Ethernetshield anschließen.
Leider funktioniert das Display nicht mehr wenn ich die RTC anschließe. Nun habe ich im Netz gesucht weil ja die SDA , SCL doppelt belegt wären. ( RTC / LCD ) . Leider habe ich nichts gefunden womit ich als Laie etwas anfangen kann. Manche Schreiben mit Pull-Up oder Portexpandern ist das realisierbar. Meine Frage ist nun was muss ich noch Organisieren um die Geräte Parallel nutzen zu können.

MFG
Funnyzocker
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2015, 17:45
Beitrag #2
RE: Arduino Mega und mehrere Shields / I2C
Um auf einem I²C Bus mitspielen zu können muss jeder Teilnehmer eine eigene Busadresse haben. Vermutlich ist diese bei deinen beiden Teilnehmern die Gleiche. Schau mal ob du eine davon ändern kannst.

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2015, 19:32
Beitrag #3
RE: Arduino Mega und mehrere Shields / I2C
Ah ich habe das Problem schon gefunden. Also Arduino Uno erkennt die RTC mit 2 Adressen. Am Uno Funktioniert Uhr , EthernetShield und LCD gleichzeitig.

Hingegen der Arduino Mega erkennt die RTC einfach nicht. Darum hat es nicht Funktioniert.

Display 0x27
RTC 0x57 und 0x68.
Ich denke mal 0x68 wird der Temperatur Sensor sein.

Wie kann es denn sein das ein Uno die RTC erkennt aber der Mega nicht?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2015, 20:03
Beitrag #4
RE: Arduino Mega und mehrere Shields / I2C
Die RTC hat noch ein kleines Eprom an Bord, daher 2 Adressen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2015, 20:09
Beitrag #5
RE: Arduino Mega und mehrere Shields / I2C
Hi.
Ja also ich bin an den richtigen Pins. An den selben Pins ist ja auch das LCD angeschlossen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2015, 21:44
Beitrag #6
RE: Arduino Mega und mehrere Shields / I2C
So. Also hier ist der Sktech und die Schaltung. Erster versuch mit Fritzing.
Wobei ich nicht denke das die Schaltung noch der Sketch ein Problem sind. Auf dem Uno funktioniert es ja so.
Auf dem Mega wird die RTC mit einem I2C Scanner nichtmal gefunden.



Code:
#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DS3232RTC.h>    
#include <Time.h>          
#include <Wire.h>

#define RELAY_ON 0
#define RELAY_OFF 1
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#define Relay_1 9
#define Relay_2 11
#define Relay_3 12


const byte ROWS = 4; //four rows
const byte COLS = 3; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte rowPins[ROWS] = {
  7, 6, 5, 8};
byte colPins[COLS] = {
  4, 3, 2};

Keypad cusomKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup(){
  //setTime(19, 32, 30, 15, 1, 2014);  
  //RTC.set(now());
  setSyncProvider(RTC.get);  
    if(timeStatus() != timeSet)
        Serial.println("Unable to sync with the RTC");
    else
        Serial.println("RTC has set the system time");
  lcd.begin(16,2);
  digitalWrite(Relay_1, RELAY_OFF);
  digitalWrite(Relay_2, RELAY_OFF);
  digitalWrite(Relay_3, RELAY_OFF);
  
  pinMode(Relay_1, OUTPUT);  
  pinMode(Relay_2, OUTPUT);
  pinMode(Relay_3, OUTPUT);

  Serial.begin(9600);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Willkommen im");
  lcd.setCursor(0,1);
  lcd.print("Gewaechshaus.");
  delay(2500);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Das System");
  lcd.setCursor(0,1);
  lcd.print("wird gestartet.");
  delay(2500);
  lcd.clear();
  lcd.setCursor(0,0);
  tmElements_t tm;
  RTC.read(tm);
  lcd.print(tm.Hour, DEC);
  lcd.print(':');
  lcd.print(tm.Minute,DEC);
  lcd.print(':');
  lcd.print(tm.Second,DEC);
   //lcd.noBacklight();
}

void loop(){
  char customKey = cusomKeypad.getKey();
  if (customKey == '1'){
    lcd.backlight();
    digitalWrite(Relay_1, RELAY_ON);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Relais 1 wurde");
    lcd.setCursor(0,1);
    lcd.print("Eingeschaltet");
    delay(2500);
    lcd.noBacklight();
    lcd.clear();
  }
  else if (customKey == '2'){
    digitalWrite(Relay_1, RELAY_OFF);
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Relais 1 wurde");
    lcd.setCursor(0,1);
    lcd.print("Ausgeschaltet");
    delay(2500);
    lcd.noBacklight();
    lcd.clear();
  }
  else if (customKey == '4'){
    digitalWrite(Relay_2, RELAY_ON);
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Relais 2 wurde");
    lcd.setCursor(0,1);
    lcd.print("Eingeschaltet");
    delay(2500);
    lcd.noBacklight();
    lcd.clear();
  }
  else if (customKey == '5'){
    digitalWrite(Relay_2, RELAY_OFF);
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Relais 2 wurde");
    lcd.setCursor(0,1);
    lcd.print("Ausgeschaltet");
    delay(2500);
    lcd.noBacklight();
    lcd.clear();
  }
  else if (customKey == '7'){
    digitalWrite(Relay_3, RELAY_ON);
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Licht wurde");
    lcd.setCursor(0,1);
    lcd.print("Eingeschaltet");
    delay(2500);
    lcd.noBacklight();
    lcd.clear();
  }
  else if (customKey == '8'){
    digitalWrite(Relay_3, RELAY_OFF);
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Licht wurde");
    lcd.setCursor(0,1);
    lcd.print("Ausgeschaltet");
    delay(2500);
    lcd.noBacklight();
    lcd.clear();
  }
  else if (customKey == '*'){
    lcd.backlight();    
  }
  else if (customKey == '#'){
    lcd.noBacklight();    
  }
}


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2015, 10:17
Beitrag #7
RE: Arduino Mega und mehrere Shields / I2C
Hab deinen Code nur mal überflogen dabei sind mir 2 Dinge aufgefallen.
- du lädst die Wire.h zweimal
- durch die ganzen delay() wird dein Programm sehr langsam, vorallem beim umschalten.

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  MEGA 2560 mit 5V 12A Netzteil betreiben möglich? Nafetz 18 487 11.11.2016 05:59
Letzter Beitrag: peterfido
  3 Arduino Mega, 2 Sender 1 Empfänger claudius 22 625 18.10.2016 17:32
Letzter Beitrag: Pardini
  Mehrere RGB LEDs einzeln Blinken lassen mavericklp 2 520 04.02.2016 19:07
Letzter Beitrag: mavericklp
  Zwei Ausgabeports am Mega verbinden um 50 mA Verbraucher anzuschließen ? holo 15 862 01.02.2016 13:07
Letzter Beitrag: Bitklopfer
  Arduino Mega Fehlverhalten hanse44 5 725 27.01.2016 08:25
Letzter Beitrag: hotsystems
  Pinabstand zwischen DP7 und DP8 stört beim Bau eines Shields TheJukeboxMan 6 608 19.01.2016 19:45
Letzter Beitrag: TheJukeboxMan
  Pinbelegung UNO und Mega für TFT Anschluss AchDuShrek 4 1.499 19.11.2015 21:40
Letzter Beitrag: Klaus(i)
  UTFT an Arduino mega mit Flachbandkabel anschließen Jensus 1 882 03.10.2015 12:52
Letzter Beitrag: hotsystems
  MPU 9150 mit Arduino Mega Neo2030 6 906 19.09.2015 21:01
Letzter Beitrag: HaWe
Question Mega und nrf24 MeRo113 0 728 19.08.2015 17:56
Letzter Beitrag: MeRo113

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste