Tag 15: Lichtsensor
Das Projekt des heutigen Tages benutzt die Webseite des Webservers nicht als Steueroberfläche, sondern als Ausgabeelement. Die über einen Helligkeitssensor gemessene Helligkeit wird als Relativwert übersichtlich dargestellt.
Hinter dem heutigen Türchen befindet sich ein Fototransistor, der als Lichtsensor dient. Der Fototransistor sieht aus wie ein LED, sollte aber nicht mit einer verwechselt werden. Den Aufbau des heutigen Versuchs zeigt das Bild. Der Kollektor des Fototransistors ist der kürzere Anschluss und liegt an +5 V.
Das Programm: Day15_TCPServerBright
Bis heute bestanden die Webseiten des Webservers immer aus einer nicht veränderbaren Seite, die Daten an den Controller geschickt hat. Heute soll die Webseite vor dem Übertragen an den Browser verändert werden, um die gemessene Helligkeit des Fototransistors anzuzeigen. Dies funktioniert, weil im Quellcode der Webseite eine Art Platzhalter versteckt ist. Das Programm ersetzt nun beim Laden der Daten aus der Progmen-Variablen den Platzhalter *bright* durch den aktuellen Helligkeitswert. Somit werden der Ausgabetext und der Ausschlag des Schiebereglers verändert. Eine weitere Zeile in der HTML-Datei sorgt dafür, dass sich die Seite automatisch alle paar Sekunden neu lädt. Schon wird die aktuelle Helligkeit übersichtlich im Browser angezeigt.
hello
The recovery rate for microorganisms from dry inocu-lums (on membranes) at time 0 (control ¼ T0)is around 90%, regardless of the strain or the test.
http://www.allcleannaturalcn.com
Heute habe ich endlich das offline tool vom Klaus im Forum gefunden.
Herzlichen Dank fürs Sharen.
http://iot.fkainka.de/forum/topic/textconverter
Das Tool ist super !
Für den Tag 15 habe ich folgende Parameter verwendert
Input: „HTLM text“
Parameter: „Plain Text“ „CR LF“
Output: „const byte site[] PROGMEM“
Parameter: „Byte Array“ „LF“
Beispiel
Hallo,
2 Fragen zum Tag 15:
– wie sieht der Fototransistor aus; wie kann man ihn von einer LED unterscheiden?
– wie ist die Brücke/Kabel unten links bei „Y2 gesteckt? Obendrüber befindet sich kein Loch im Breadboard.
Gruß
Alfred
Hi,
die Dioden musst du von oben anschauen,
Weiss – Diode
Schwarz – Fotodiode
Schwarz, kleiner Punkt – IR-Diode
Das Bild passt nicht ganz. Der kurze Anschluss der Diode muss auf 5V, also direkt auf den Anschluss
„Y 1“
Bei mir ist in dieser Tür ein Kondensator drin??
Da ist wohl bei Dir was durcheinander geraten. Auf Tag0 gibt es eine Liste, wann was drin sein sollte.
Hey,
endlich hatte ich auch mal wieder Zeit meinen Adventskalender auf den neuesten Stand zu bringen. Waren wieder super Projekte dabei, die mein „Anfängerherz“ höher schlagen lassen :). An dieser Stelle nochmals vielen lieben Dank!
Eine wichtige Frage hätte ich allerdings noch (passt zwar nicht so 100 prozentig an diese Stelle aber ich hoffe, dass mir trotzdem jemand „helfen“ bzw. mich beraten kann).
Ich möchte mich mehr mit dem Thema rund um das Arduino Board beschäftigen. Dazu würde ich mir gerne ein „Paket“ mit einem möglichst ausführlichem Handbuch aber auch einer vielzahlt an Bauteilen für Projekte in alle Richtungen zulegen. Bei Conrad findet man ja viele solcher Pakete. Es wäre super, wenn mir jemand eine Ratschlag (oder Erfahrung) geben kann, was für ein (Lern)paket perfekt für mich wäre :).
Ich würde mich sehr über Antworten freuen :)
Danke schonmal und liebe Grüße
Ralph
Hi. Wenn Enlisch kein Problem ist kannst Du im Moment bei sharewareonsale.tradepub.com ein paar recht gute Bücher als PDF gratis bekommen. Gib einfach in der Suche mal Arduino ein. Dann werden da Ein Beginners Guide, ein Buch über C-Programmierung des Arduino, Ein Buch über Home Automation und ein Bundle für den RasPi angeboten.
und für Bauteile Sets kann man auch mal in einem großen Auktionshaus oder auf DX.com schauen… ;-)
Vielen Dank für die Infos zum kostenlosen Guide! „Standartenglisch“ ist kein Problem :)
Hallo Ralph,
schau Dir das mal an.
https://www.arduino.cc/en/Main/ArduinoStarterKit
Damit habe ich auch angefangen, und bin auch noch mit viel Spaß und auch Erfolg dabei.
Hallo MC,
vielen Dank für deine Antwort!
Dieser Kit, den du gepostet hast, ist doch vergleichbar mit dem hier, welcher bei conrad angeboten wird:
https://www.conrad.de/de/arduino-arduino-starter-kit-k000007-095060.html
Ich habe nämlich noch einen Gutschein von Conrad und bekomme über Weihnachten besuch von meinem Neffen. Wir wollen uns das sozusagen „teilen“ und zusammen lernen :)Da muss ich schauen, dass der bis dahin noch eintrifft :).
Eine Frage noch. Bei diesen StaerterKit`s ist ja immer ein Arduino UNO dabei. Kann dieser für die Projekte auch durch das NanoESP-Board aus dem Kalender ersetzt werden? Ein Arduino UNO hat ja kein w-lan Modul.
Liebe Grüeß
Ralph
Hallo Ralph,
da bin ich nun auch überfragt, da ich mich abseits dieses Kalenders noch gar nicht mit dem NanoESP beschäftigt habe.
Da aber auch hier genügend I/O Pins, sowohl digital, analog, als auch PWM vorhanden sind, sollte es schon möglich sein, den Arduino Uno durch das NanoESP zu ersetzen.
Vergleiche aber auf jeden Fall die Strombelastbarkeit der Pins an den unterschiedlichen Boards. Nicht das es zu einer Überlastung und damit Beschädigung des NanoESP bei einem der Versuche aus dem Buch kommt.
war das jetzt ne schlechte idee, den widerstand wegzunehmen, um das programm auf das board zu laden?
Mach ich mit dem 9V-block den Transistor kaputt?
Ich werde es ja gleich sehen.
1. ich so: wow, ne led! ab in die kiste. ??Wie kann man die unterscheiden???
2. „Der kollektor liegt an den 5V“ – alles klaro!!
3. was ist das für blauer strich bei dem sensor auf dem bild, der über der weißen fläche einfach aufhört?
4. ist das nur bei mir so, dass der usb-stecker die felder für den widerstand überdecken?
Superspaß heute …
1. Wenn Du in die Linse schaust ist der Fototransistor dunkel, bei LEDs sit das hell.
2. ja
3. Der blaue Strich ist falsch, der Anschluss des FT kann gleich in die Y Reihe gesteckt werden.
4. Nein, das ist bei Allen so. lege den Widerstand einach flach auf das Breadboard, dann passt der Stecker drüber.
Hi,
ich wollte das Prog von heute so verändern das unter einer bestimmten Helligkeit eine LED an D9 geschaltet wird. Bin mir eigentlich sicher das der Schaltungsaufbau richtig ist. Bin im Programmieren nicht gerade ein Crack, bzw. ist schon lange her :-P. müsste doch mit ner einfachen if schleife zu machen sein:
if (SENSOR < 600);
{
pinMode(LED, HIGH);
}
Jemand ne Idee?
oder so? geht auch nich :-(
if ((analogRead(SENSOR)) < 600);
{
pinMode(LED, OUTPUT);
}
So leuchtet die LED immer, aber nur sehr schwach
if ((analogRead(SENSOR)) < 600);
{
digitalWrite(LED,HIGH);
}
Ich glaube, Du musst schon ein bischen mehr von Deinem Programm zeigen, z.B. die ganze Loop() Funktion. Sonst kann keiner sehen, ob und wenn ja, wo Du die LED ausschaltest (digitalWrite(LED, LOW);)
pinMode(LED, OUTPUT) gehört natürlich in die Setup() Funktion.
Hey,
also das ist mal ein Auszug, WLAN Daten sind natürlich auch drin.
Hätte gerne das die LED brennt solange es dunkel ist und aus geht wenns hell genug ist.
Schön, dass hier auch kein Noop hilfe bekommt :-P
#define LED_WLAN 13
#define LED 9
#define SENSOR A0
#define DEBUG true
#include
SoftwareSerial esp8266(11, 12); // RX, TX
const byte site[] PROGMEM = {
60,72,84,77,76,62,60,72,69,65,68,62,10,60,108,105,110,107,32,114,101,108,61,34,105,99,111,110,34,32,104,114,101,102,61,34,100,97,116,97,58,59,98,97,115,101,54,52,44,105,86,66,79,82,119,48,75,71,103,111,61,34,62,10,60,109,101,116,97,32,110,97,109,101,61,34,118,105,101,119,112,111,114,116,34,32,99,111,110,116,101,110,116,61,34,119,105,100,116,104,61,100,101,118,105,99,101,45,119,105,100,116,104,44,32,105,110,105,116,105,97,108,45,115,99,97,108,101,61,50,46,48,44,32,117,115,101,114,45,115,99,97,108,97,98,108,101,61,121,101,115,34,62,10,60,109,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,114,101,102,114,101,115,104,34,32,99,111,110,116,101,110,116,61,34,51,34,62,10,60,116,105,116,108,101,62,10,66,114,105,103,104,116,110,101,115,115,10,60,47,116,105,116,108,101,62,10,60,47,72,69,65,68,62,10,60,66,79,68,89,32,98,103,99,111,108,111,114,61,34,35,70,70,70,70,57,57,34,32,116,101,120,116,61,34,35,48,48,48,48,48,48,34,62,10,60,70,79,78,84,32,115,105,122,101,61,34,54,34,32,70,65,67,69,61,34,86,101,114,100,97,110,97,34,62,10,66,114,105,103,104,116,110,101,115,115,10,60,47,70,79,78,84,62,10,60,70,79,78,84,32,115,105,122,101,61,34,51,34,32,70,65,67,69,61,34,86,101,114,100,97,110,97,34,62,10,60,72,82,62,10,60,66,82,62,10,9,60,108,97,98,101,108,32,102,111,114,61,34,104,101,108,108,34,62,67,117,114,114,101,110,116,32,66,114,105,103,104,116,110,101,115,115,58,32,42,98,114,105,103,104,116,42,60,47,108,97,98,101,108,62,32,60,66,82,62,10,9,60,105,110,112,117,116,32,116,121,112,101,61,34,114,97,110,103,101,34,32,32,109,97,120,32,61,32,34,49,48,50,52,34,32,110,97,109,101,61,34,104,101,108,108,34,32,118,97,108,117,101,61,42,98,114,105,103,104,116,42,62,60,66,82,62,10,60,66,82,62,10,60,72,82,62,10,60,47,102,111,110,116,62,10,60,47,72,84,77,76,62
};
void setup() {
pinMode(LED,OUTPUT);
Serial.begin(19200);
esp8266.begin(19200);
if (!espConfig()) serialDebug();
else digitalWrite(LED_WLAN, HIGH);
if (configTCPServer()) debug(„Server Aktiv“); else debug(„Server Error“);
}
void loop() {
if ((analogRead(SENSOR)) 600);
{
digitalWrite(LED, LOW);
}
Hat loop nicht gescheit kopiert
void loop() {
if ((analogRead(SENSOR)) 600);
{
digitalWrite(LED, LOW);
}
void loop(){
if ((analogRead(SENSOR)) 600);
{
digitalWrite(LED, LOW);
}
Also nochmal Sorry
#define LED_WLAN 13
#define LED 9
#define SENSOR A0
#define DEBUG true
#include
SoftwareSerial esp8266(11, 12); // RX, TX
const byte site[] PROGMEM = {
60,72,84,77,76,62,60,72,69,65,68,62,10,60,108,105,110,107,32,114,101,108,61,34,105,99,111,110,34,32,104,114,101,102,61,34,100,97,116,97,58,59,98,97,115,101,54,52,44,105,86,66,79,82,119,48,75,71,103,111,61,34,62,10,60,109,101,116,97,32,110,97,109,101,61,34,118,105,101,119,112,111,114,116,34,32,99,111,110,116,101,110,116,61,34,119,105,100,116,104,61,100,101,118,105,99,101,45,119,105,100,116,104,44,32,105,110,105,116,105,97,108,45,115,99,97,108,101,61,50,46,48,44,32,117,115,101,114,45,115,99,97,108,97,98,108,101,61,121,101,115,34,62,10,60,109,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,114,101,102,114,101,115,104,34,32,99,111,110,116,101,110,116,61,34,51,34,62,10,60,116,105,116,108,101,62,10,66,114,105,103,104,116,110,101,115,115,10,60,47,116,105,116,108,101,62,10,60,47,72,69,65,68,62,10,60,66,79,68,89,32,98,103,99,111,108,111,114,61,34,35,70,70,70,70,57,57,34,32,116,101,120,116,61,34,35,48,48,48,48,48,48,34,62,10,60,70,79,78,84,32,115,105,122,101,61,34,54,34,32,70,65,67,69,61,34,86,101,114,100,97,110,97,34,62,10,66,114,105,103,104,116,110,101,115,115,10,60,47,70,79,78,84,62,10,60,70,79,78,84,32,115,105,122,101,61,34,51,34,32,70,65,67,69,61,34,86,101,114,100,97,110,97,34,62,10,60,72,82,62,10,60,66,82,62,10,9,60,108,97,98,101,108,32,102,111,114,61,34,104,101,108,108,34,62,67,117,114,114,101,110,116,32,66,114,105,103,104,116,110,101,115,115,58,32,42,98,114,105,103,104,116,42,60,47,108,97,98,101,108,62,32,60,66,82,62,10,9,60,105,110,112,117,116,32,116,121,112,101,61,34,114,97,110,103,101,34,32,32,109,97,120,32,61,32,34,49,48,50,52,34,32,110,97,109,101,61,34,104,101,108,108,34,32,118,97,108,117,101,61,42,98,114,105,103,104,116,42,62,60,66,82,62,10,60,66,82,62,10,60,72,82,62,10,60,47,102,111,110,116,62,10,60,47,72,84,77,76,62
};
void setup() {
pinMode(LED,OUTPUT);
Serial.begin(19200);
esp8266.begin(19200);
if (!espConfig()) serialDebug();
else digitalWrite(LED_WLAN, HIGH);
if (configTCPServer()) debug(„Server Aktiv“); else debug(„Server Error“);
}
void loop() {
if ((analogRead(SENSOR)) *pfeillinks* 600);
{
digitalWrite(LED, HIGH);
}
if ((analogRead(SENSOR)) *pfeilrechts* 600);
{
digitalWrite(LED, LOW);
}
String xBuffer;
Der Rest ist gleich mit dem Prog von heute
Ah der fügt das nicht richtig ein
if ((analogRead(SENSOR)) 600);
{
digitalWrite(LED, LOW);
}
Das Pfeilrechts-Symbol kommt im Kommentar nicht durch.
fk müsste da schon grösseren Aufwand treiben, um das zu beheben (das Symbol hat in HTML eine wichtige Rolle).
Dies wurde in den Kommentaren auch schon erwähnt.
Da ist ein Semikolon am Ende der If Zeile. D.h. wenn die Bedingung erfüllt wird, tue nichts. Was Du meintest, ist:
if ( analogRead(SENSOR) < 600 )
{
digitalWrite(LED, LOW);
}
else
{
digitalWrite(LED, HIGH);
}
Kein Semikolon hinter dem IF und das ELSE ist auch wichtig, sonst bleibt die Lampe immer aus.
Sollte so gehen. ändert sich wirklich nichts?
Mit 10k (orange) wirds düster, mit 1k (rot) sollte es einigermassen leuchten.
Ahhh ich habs. Ich Idiot hatte zwei ; zuviel
Bitte ignoriert die Kommentare, sorry für den Spam.
Viel wills ja jemand nachmachen:
Das hier
void loop() {
if ((analogRead(SENSOR)) *pfeillinks* 600)
{
digitalWrite(LED, HIGH);
}
if ((analogRead(SENSOR)) *pfeilrechts* 600)
{
digitalWrite(LED, LOW);
}
String xBuffer;
Einfügen, oben pinMode(LED,OUTPUT);
und voila. Läuft
Was ich jetzt damit mache. Mhm
ich brauche eine neue Brille!
Beim Widerstand bitte aufpassen: Braun – Schwarz – Orange, nicht Braun – Schwarz – Rot !
Hätte man mal dazu schreiben sollen. Ich als Elektroniker weiß das, aber die meisten werden darauf nicht achten.
Ich find’s gruselig dass einfach nur gesagt wird „bitte nicht mit LED verwechseln“ ohne einen Hinweis darauf, wie man die beiden absolut sicher unterscheiden kann. Ich weiß genau dass ich mir das nicht merken kann und eigene Markierungen draufpinseln, wie unprofessionell ist das denn… :(
Die Kalenderfächer sind angeschrieben. Man kann sie ja zur Sicherheit schön brav zurücklegen! Haha.
Schau von ganz Oben drauf ;)
Die LED sieht Weiß aus
und der Fototransistor Schwarz
Guten Morgen, hoffe mal, das ist keine illegale Werbung.
https://www.facebook.com/groups/967872949952771/
(IoT mit dem NanoESP)
Angelegt für weitere, weitergehende Experimente, Erfahrungsaustausch, Bilder, Videos…
Viel Spaß
Jens
Fratzenbuch …? Echt jetzt?
mit der Flöte vorangehen und sammeln…
Wieder der gleiche Fehler wie gestern:
for (int i = 0; i <= sizeof(site); i++)
müsste lauten
for (int i = 0; i < sizeof(site); i++)
Sonst wird ein Byte zuviel gesendet (ist dem Browser aber egal).
Funktioniert dank dem Nullterminator; length() liefert die gewünschte Länge.
Die Länge eines C-Strings bestimmt man mit strlen(), die Länge eines C-Strings im Program-Memory mit strlen_P().
Eigentlich sollte zum kopieren von C-Strings ja strcpy_P() verwendet werden. Hier wird aber nicht von C-String auf C-String kopiert, sondern von C-String auf C-Object. Daher die For-Schleife.
mit Edding angemalt (natürlich nur unten ;))
habe gerade Tag 10 bis 15 „erledigt“ und es hat alles super funktioniert, bin total begeistert und freue mich auf die nächsten Tage.
Grosses Lob dem Autor!!
Bei mir hat der Foto-T ein „kleineres“ Innenleben.
Ggf. kann man die Lichtempfindlichkeit noch mit einem Multimeter messen, um ganz sicher zu sein.
Ich frage mich gerade, ob der Foto-T den Strom von ~20mA überleben würde, wenn man ihn ausversehen mit der LED verwechselt.
Und wie genau kann ich jetzt den Fototransistor von einer weißen LED unterscheiden? (Könnte ja sein, dass die mal zufällig zusammen irgendwo herumliegen.)
Servus
Die LEDs haben an der Kathode ein schwarzes Klebeband bekommen.
Fototransistor ein rotes.
Die Wiederstände weiss mit den Werten drauf
Grüssle