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
I2C-Scanner
05.01.2019, 22:22
Beitrag #9
RE: I2C-Scanner
Hallo,
die Änderungen durchgeführt.

Code:
const int SwitchTime = 10000; //switching time in millis
char addressStr[3];
byte error, address,adressStr,adress;
int nDevices;
...
Code:
if (address != 0x57 && address != 0x3c && address != 0x68)
      {
        //address++;
        nDevices++;
        Serial.print("in ");
        Serial.println(address,HEX);
        
      }
      else    
        {
      sprintf(adressStr, "%02x",address);
      u8g.setFont(u8g_font_9x18);
      u8g.drawStr(posi,50,adressStr);
      nDevices++;
      posi = posi + 25;
        }

Leider immer noch die gleiche Meldung
call of overloaded 'drawStr(int&, int, byte&)' is ambiguous

Es gibt Tage , da verlierst Du und es gibt Tage , da gewinnen die anderen .
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2019, 22:27 (Dieser Beitrag wurde zuletzt bearbeitet: 05.01.2019 22:28 von Tommy56.)
Beitrag #10
RE: I2C-Scanner
Du weißt nicht wirklich, was Du tust.
Zitat:char addressStr[3];
byte error, address,adressStr,adress;

Wirf das Zweite raus.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2019, 22:41
Beitrag #11
RE: I2C-Scanner
Danke für die Hinweise.
Änderungen durchgeführt,jetzt ohne Fehlermeldungen aber
mit dem selben Resultat:alle drei Adressen werden wie zu
Beginn angezeigt.

Gruß Bernd

Es gibt Tage , da verlierst Du und es gibt Tage , da gewinnen die anderen .
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2019, 22:53
Beitrag #12
RE: I2C-Scanner
Dann zeige mal den aktuellen Sketch.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2019, 23:00 (Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2019 02:54 von BerndHF.)
Beitrag #13
RE: I2C-Scanner
Hier der aktuellen Sketch :
Code:
/*

Bernd_HF


*/

#include "U8glib.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Time.h>       // Time Manipulation
#include <DS1307RTC.h>  // DS1307 RTC
#include <Wire.h>

//________________________________________________________________________________​____________________

float temperature;
char temperatureString[10] = "-";
char timebuf[10];       // Time
char datebuf[12];       // Date
int year2digit;         // 2 digit year
int year4digit;         // 4 digit year
const int SwitchTime = 10000; //switching time in millis
char addressStr[3];
byte error, address,adress;
int nDevices;

//________________________________________________________________________________​_____________________

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);    // OLED-Display mit i2C-Bus

//________________________________________________________________________________​___________________

void anzeigeDisplay(void)
{
   u8g.setFont(u8g_font_9x18);
   u8g.drawStr(0,10,"Bernd HF-Tech.");
   u8g.setFont(u8g_font_9x18);
   u8g.drawLine(0, 15, 127, 15);
   u8g.setFont(u8g_font_6x12);
   u8g.setPrintPos(0, 64);        // set position 1 Spalte und Zeile 64
   u8g.print(timebuf);            // display Zeit
   u8g.setFont(u8g_font_6x12);    // set position
   u8g.drawStr(70,64,datebuf);    // display Datum
   u8g.setFont(u8g_font_9x18);    // set position

   nDevices = 0;
   int posi = 0;
for(address = 1; address < 120; address++ )
  {
// Der i2c-Scanner verwendet den Rückgabewert 7 der Wire.endTransmission,
//um festzustellen, ob ein Gerät die Adresse bestätigt hat.    
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    
if (error == 0)
    {
      u8g.setFont(u8g_font_9x18);///
      u8g.drawStr(0,31,"I2C found Hex");
//***********************************************      
//      if (address == 0x57)     // 0x3c,,0x57,0x68 sollen nicht angezeigt werden
  Serial.print("vor ");
  Serial.print(address,HEX);
  Serial.print(" , ");
      if (address != 0x57 && address != 0x3c && address != 0x68)
      {
        //address++;
        nDevices++;
        Serial.print("in ");
        Serial.println(address,HEX);
        
      }
      else    
        {
      sprintf(addressStr, "%02x",address);
      u8g.setFont(u8g_font_9x18);
      u8g.drawStr(posi,50,addressStr);
      nDevices++;
      posi = posi + 25;
        }
    }
  }
}

//________________________________________________________________________________​_____________________
void setup(void)
{
  Serial.begin(9600);
  
}

//________________________________________________________________________________​_____________________

void loop()
{
// RTC-Zeit und Datum einlesen
tmElements_t tm;
if (RTC.read(tm))
{
year2digit = tm.Year - 30;  // 2 digit für Jahr
//year4digit = tm.Year + 1970;  // 4 digit für Jahr

sprintf(timebuf, "%02d:%02d:%02d",tm.Hour, tm.Minute, tm.Second); // Format für die Zeit
sprintf(datebuf, "%02d.%02d.%02d",tm.Day, tm.Month, year2digit);  // format für Datum

/********************************************/
  u8g.firstPage();  
  do {  
      anzeigeDisplay ();                            // Ausgabe von Zeit und Datum auf OLED
    
     }
     while( u8g.nextPage() );

}
  delay(1000);  // Delay
    
}
// Ende

Gruß Bernd

Hallo zusammen,

habe das Programm nun am laufen.Big GrinBig GrinBig Grin
funktioniert wie gewollt.
Danke auch Tommy56.
Hier der geändert Code:
Code:
/*
Bernd_HF
1.Stufe
I2C Adressen von Bauelementen und Modulen auslesen und
auf OLED-Display Anzeigen.
Auf dem Gerät verbaute I2C-Adressen werden nicht mit
angezeigt.

*/

#include "U8glib.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Time.h>       // Time Manipulation
#include <DS1307RTC.h>  // DS1307 RTC
#include <Wire.h>

//________________________________________________________________________________​​____________________

float temperature;
char temperatureString[10] = "-";
char timebuf[10];       // Time
char datebuf[12];       // Date
int year2digit;         // 2 digit year
int year4digit;         // 4 digit year
char adress[3];
const int SwitchTime = 10000; //switching time in millis

byte error, address;
int nDevices;

//________________________________________________________________________________​​_____________________

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);    // OLED-Display mit i2C-Bus

//________________________________________________________________________________​​___________________

void anzeigeDisplay(void)
{
   u8g.setFont(u8g_font_9x18);
   u8g.drawStr(0,10,"Bernd HF-Tech.");
   u8g.setFont(u8g_font_9x18);
   u8g.drawLine(0, 15, 127, 15);
   u8g.setFont(u8g_font_6x12);
   u8g.setPrintPos(0, 64);        // set position 1 Spalte und Zeile 64
   u8g.print(timebuf);            // display Zeit
   u8g.setFont(u8g_font_6x12);    // set position
   u8g.drawStr(70,64,datebuf);    // display Datum
   u8g.setFont(u8g_font_9x18);    // set position

   nDevices = 0;                  // Zähler für I2C Bauteile
   int posi = 0;                  // für Abstand der Adressen auf dem Dispay
  
for(address = 1; address < 120; address++ ) // Zähler für Adressen
  {
// Der i2c-Scanner verwendet den Rückgabewert 7 der Wire.endTransmission,
//um festzustellen, ob ein Gerät die Adresse bestätigt hat.    
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    
if (error == 0)                   // kein Fehler
    {
      u8g.setFont(u8g_font_9x18);///
      u8g.drawStr(0,31,"I2C found Hex");
//***********************************************  
if (address != 0x57 && address != 0x3c && address != 0x68)     // 0x3c,,0x57,0x68 sollen nicht angezeigt werden
       {
      sprintf(adress, "%02x",address);    
      u8g.setFont(u8g_font_9x18);
      u8g.drawStr(posi,50,adress);
      nDevices++;
      posi = posi + 25;    
      }
    }
}
//________________________________________________________________________________​​_____________________
void setup(void)
{
  Serial.begin(9600);
  
}

//________________________________________________________________________________​​_____________________

void loop()
{
// RTC-Zeit und Datum einlesen
tmElements_t tm;
if (RTC.read(tm))
{
year2digit = tm.Year - 30;  // 2 digit für Jahr
//year4digit = tm.Year + 1970;  // 4 digit für Jahr

sprintf(timebuf, "%02d:%02d:%02d",tm.Hour, tm.Minute, tm.Second); // Format für die Zeit
sprintf(datebuf, "%02d.%02d.%02d",tm.Day, tm.Month, year2digit);  // format für Datum

/********************************************/
  u8g.firstPage();  
  do {  
      anzeigeDisplay ();                            // Ausgabe von Zeit und Datum auf OLED
    
     }
     while( u8g.nextPage() );

}
  delay(1000);  // Delay
    
}
// Ende

Es gibt Tage , da verlierst Du und es gibt Tage , da gewinnen die anderen .
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Scanner für I2C-Adressen? alpenpower 2 9.738 11.09.2013 18:39
Letzter Beitrag: alpenpower

Gehe zu:


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