Luxmeter am digispark betreiben

Hallo zusammen,
ich habe mir das Luxmeter BH1750 besorgt und würde es gerne mit einem Digispark (in der USB-Version mit ATTiny85) betreiben um bei plötzlichen Lichschwankungen eine Art “Alarm” in Form einer sich einschaltenden Lampe zu betreiben.
Ich weiß, dass mit einem LDR wohl einiges einfacher wäre aber ich würde dennoch gerne wegen der Genauigkeit den BH1750 benutzen.
Den Sketch habe ich bereits fertig und auf meinem Uno funktioniert er auch ohne Probleme. Die Initialisierung und Einbindung des BH1750 am Anfang habe ich von einem anderen Projekt abgeschaut.
Jetzt habe ich das ganze versucht auf den Digispark zu übertragen und es funktioniert nach vielem rumprobieren leider immer noch nicht.
Ich weiß, dass der Sensor I2C nutzt und habe auch die entsprechenden Pins (Pin0 und Pin2) auf dem Digispark genutzt.
Weil mit dem Digispark ja leider keine serielle Schnittstelle verfügbar ist, kann ich leider noch nicht einmal kontrollieren ob ich theoretisch überhaupt ein Signal habe.

Nun meine Frage:
Hat irgendjemand Erfahrung mit dem BH1750 in Kombination mit dem Digispark oder habe ich irgendetwas wichtiges bei der Übertragung des Sketches vergessen, bzw. kann man den einfach so übertragen (hat bei allen anderen Projekten eignetlich nie Probleme gemacht)?
Bin leider eher ein Anfänger und würde mich daher sehr über fachkundige Hilfe freuen.

Hier ist nochmal der Code:

#include <Wire.h>
#include <BH1750.h>
int wert1;
int wert2;
int lampe = 3;

BH1750 lightMeter;

void setup(){
  Wire.begin();
  Serial.begin(9600);
  lightMeter.begin();
  Serial.println(„Messung startet“);
  delay(500);
  
}

void loop() {
  uint16_t intensity= lightMeter.readLightLevel();
  Serial.print("Lichtintensität: ");  
  Serial.print(intensity);
  Serial.println(" lux");
  
  
  wert1 = lightMeter.readLightLevel();      
                                          
  Serial.println(wert1);

  delay(150);     
                  
                                                                            
  int wert2 = lightMeter.readLightLevel();  
  if (wert2-wert1 > 25 || wert1-wert2 > 25) {     
    Serial.println("ALARM!");
    Serial.print("Differenz beträgt");
    Serial.println(wert2-wert1);
    delay(2000);
    digitalWrite(lampe, HIGH);
  }
}

Ich bin mir nicht sicher, ob die Library für den BH1750 überhaupt auf dem ATtiny85 läuft.
Bisher habe ich die immer problemlos auf einem Atmega328 (Uno, Nano o.ä.) betrieben.
Wie sieht es denn mit der Speicherauslastung aus ?

Edit:
Hier gibt es eine serielle Debughilfe für den ATtiny85: ATtiny-Debughilfe

Hallo Dieter,
danke schon einmal für deine Antwort.
Die Überlegung, dass die Bibliothek nur für den Uno/Nano konzipiert wurde hatte ich auch schon einmal.
Ich habe mir mal den Code-Inhalt der Bibliothek BH1750 angeschaut und nach Hinweisen dafür geschaut wurde daraus aber auch nicht so recht schlau.
Ich habe noch ein bisschen recherchiert und so wie es aussieht ist die Kompatibilität mit anderen Geräten wohl eher von der Wire.h -Bibliothek abhängig, die ja den Großteil der I2C-Kommunikation regelt.
Es gibt wohl noch eine andere namens "TinyWireM.h", die auf den ATTiny 85 zugeschnitten ist, die werde ich nun einmal ausprobieren..
Die Speicherauslastung mit dem aktuellen Sketch liegt bei 73%, ist denke das ist noch im Rahmen?
Mal sehen ob ich mit der anderen Bibliothek Erfolg haben werde.
LG

Ja, stimmt.
Die TinyWireM solltest du in jedem Fall nehmen.
Hatte ich glatt übersehen.

Da bin ich nochmal,
ich habs probiert aber so einfach ist es leider nicht. Auch wenn die TinyWireM.h-Bibliothek theoretisch die Kompatibilität mit dem ATTiny herstellen würde, bezieht sich die BH1750.h-Bibliothek natürlich weiterhin auf die Wire.h.
Ich habe zwar versucht in der BH1750.h alle Befehle und "Erwähnungen" von "Wire" in "TinyWireM" zu ändern, das hat aber leider nichts gebracht und nur eine Menge Fehlermeldungen produziert.
Ich fürchte ich bin hier mit meinem Latein am Ende, dafür kenne ich mich dann einfach zu schlecht aus.
Vielleicht weiß doch noch jemand einen Rat?
Dir auf jeden Fall schon einmal vielen Dank, Dieter.

Ok, gerne.

Ja, da wird es etwas knifflig.
Du musst dann auch die BH1750.cpp anpassen, oder du nimmst eine passende Library: geeignet für ATtiny85
Ungetestet!

wutschler:
Vielleicht weiß doch noch jemand einen Rat?

Da ich mit einem ATtiny85 (DIP8) angefangen habe, freue ich mich natürlich immer, wenn jemand auch etwas damit macht. Allerdings bin ich inzwischen auf Nanos1) oder ProMinis2) vom freundlichen Chinesen umgestiegen, weil da der selbe Prozessor drauf ist wie beim UNO, denn da laufen dann auch die gängigen Bibliotheken. Es gibt viele Argumente dafür und dagegen, aber es könnte eine Möglichkeit für einen Ausweg sein.


Anm:

  1. Der Link dient nur der Veranschaulichung.
  2. Der Link dient nur der Veranschaulichung. Bitte auf die “Farbe” (= Typ) achten, damit man auch den richtigen Typ 5V 16 MHz bekommt. Der USB-Seriell-Adapter kann für alle ProMinis verwendet werden und ist daher nur einmal in der Bastelkiste notwendig.

agmue:
....
Allerdings bin ich inzwischen auf Nanos oder ProMinis....

Dabei sind die ATtiny85 so niedlich und viel kleiner. :wink:

Ok, man muss Drumherum mehr machen. :grinning:

HotSystems:
Dabei sind die ATtiny85 so niedlich und viel kleiner. :wink:

Ich teile gerne mein Taschentuch :slight_smile:

Ich mag die ja auch, aber wer einen Digispark verwendet anstelle DIP oder SMD, hat genügend Platz für einen ProMini.

Wer wie Du eigene Platinen für SMD entwickelt, ist selbstverständlich auf der (Platz-) Gewinnerseite!

agmue:
Ich teile gerne mein Taschentuch :slight_smile:

Ich mag die ja auch, aber wer einen Digispark verwendet anstelle DIP oder SMD, hat genügend Platz für einen ProMini.

Wer wie Du eigene Platinen für SMD entwickelt, ist selbstverständlich auf der (Platz-) Gewinnerseite!

Ok, Digispark wäre hier natürlich keine Alternative für mich.
Es muss halt alles im Rahmen bleiben.

Zeitaufwand, Größe, Spass, Kosten und Nutzen.

Wenn das alles passt, ist letztendlich egal welcher Controller drauf sitzt.

Die BH1750-Library für den ATTiny funzt leider auch nicht. Habe mich jetzt auch entschieden das ganze Projekt mit einem anderen Board zu realisieren, so praktisch ich den Digispark auch finde.
Ich wollte die Lichtwerte eigentlich eh über große Distanz schicken und wollte mich daher bei der Gelegenheit mal mit dem SX1278 Lo-Ra-Modul vertraut machen, da fällt der Digispark ja eh raus, weil der nicht die erforderlichen 12 Pins hat...(bin mal gespannt wie weit ich mit Lo-Ra komme, hab da teilweise von einigen Kilometern gehört mit guter Antenne)
Ich habe auch noch einen china-Nano hier rumfliegen allerdings kann ich den nicht flashen, weil ich an meinem Mac Probleme mit dessen CH430-Chip habe, Habe auch schon versucht meinen Uno als Programmer zu nutzen, leider auch erfolglos. Die FTDI-Version wird problemlos geflasht aber die kostet halt auch 3x so viel :confused:
Agmue, weißt du zufällig, ob ich mit dem FTDI Adapter für den Pro Mini (FT232RL 3.3V 5.5V FTDI USB to TTL Serial Adapter Module for Arduino Mini Port | eBay auch genauso den Nano programmieren kann? Der hätte ja auch die entsprechenden Pins und kostet in der Chinaversion auch nur einen euro mehr... Oder ist der nur für den ProMini ausgelegt?

wenn du den an die seriellen Pins anklemmst und den vorhanden CH340 davon trennst, wird das auch funktionieren. Oder du flashst per ISP.

wutschler:
Agmue, weißt du zufällig, ob ich mit dem FTDI Adapter für den Pro Mini auch genauso den Nano programmieren kann?

Da ich die Notwendigkeit noch nicht hatte, habe ich mir dazu noch keine Gedanken gemacht. Probieren könnte ich es, würde aber einen UNO als Programmer vorziehen.