Pages: [1] 2   Go Down
Author Topic: Mein erstes Projekt, reicht diese Hardware?  (Read 618 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Hallo,

ich wage mich nun auch mal an ein kleines Arduino-Projekt, wollte aber bevor ich mich ausstatte fragen ob mein Vorhaben mit diesen Teilen realisierbar ist oder ob ich mehr benötige.
Das Ziel ist ganz einfach, der Arduino bekommt ein Signal von einem Relais, und soll eine Email versenden.
Leider kann ich gerade noch nichts genaueres zu dem Eingangssignal sagen, nehmen wir einfach mal an ich bekomme 5V.
Meine C-Kenntnisse sollten denke ich reichen um mit eurer Hilfe das Programm auf die Beine zu stellen.
Rausgesucht habe ich mir nun folgendes:
http://www.ebay.de/itm/271394692895?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1438.l2649

Hoffe die Infos reichen fürs erste und schonmal Vielenk Dank für eure Hilfe  smiley
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja reicht dafür aus

Sollte es ein Relais sein, verwende beim PinMode INPUT_PULLUP und verbinde das Relais mit dem Input Pin
und GND, dann zieht das Relais den Pin auf GND und du kannst es im Programm abfragen.

Das Signal aufwändig zu entprellen ist wohl nicht notwendig, je nach Schalthäufigkeit reicht denke ich
ein kleiner Timer dass maximal 1 Signal alle X Sekunden möglich ist. ALso beim digitalRead(pin)==LOW AND (millis()-timer)>5000 den timer=millis()
setzen und wie im text beschrieben fragen, bis X Sekunden vergangen sind.

millis gibt glaube ich ein unsigned long als Datentyp zurück. DIeser wird irgendwann überlaufen nach 30 Tagen oder so
« Last Edit: February 14, 2014, 07:19:36 am by Hummelpups » Logged

Germany
Online Online
Faraday Member
**
Karma: 56
Posts: 2969
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Zum Entprellen reicht es, wenn du nach dem Email Senden ein delay beliebiger Größe machst. Am einfachsten deutlich länger als das Relais angezogen ist. ( Oder sollen, solange das Relais an ist, dauernd emails gesendet werden ? )

Ansonsten prellt ein Relais-Kontakt auch eventuell mal beim Abfallen. 

Die meisten Mail Server sind übrigens pingelig, von wem und wie sie beauftragt werden. Da sehe ich die größere Aufgabe ...
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hm... das Relais ist leider solange geöffnet, bis ich es manuell zurücksetze (könnten also theoretisch mehrere Stunden sein), es soll aber natürlich nur eine E-Mail gesendet werden.
Logged

Germany
Online Online
Faraday Member
**
Karma: 56
Posts: 2969
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Musst du dir eben merken, dass die mail schon gesendet wurde, und diesen Merker zurücksetzen, wenn das Relais wieder zurück geht ( und da auch ein kleines entprell-delay vorsehen ) .
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok ich bin gerade ziemlich überfordert  smiley-confuse, muss mich da glaubig erstmal reinfinden.
Das E-Mail senden muss erstmal hinten ran gestellt werden, blick ja hier schon nicht mehr durch...


int inPin = 2;
int x = 0;
int y = 0;

void setup()
{
pinMode(inPin,INPUT_PULLUP);
}

void loop()
{
x = digitalRead(inPin)

if(inPin == LOW)
{
y++;
}
delay(1000);

   if(inPin == HIGH && y==0)
   {
   // E-mail senden
   
   y = 1;
   
   }
   delay(1000);
}
Logged

Online Online
God Member
*****
Karma: 12
Posts: 570
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die meisten Mail Server sind übrigens pingelig, von wem und wie sie beauftragt werden. Da sehe ich die größere Aufgabe ...

Da kann ich ein Lied von singen - graue Haare hab ich bekommen!
Logged

Offline Offline
Edison Member
*
Karma: 38
Posts: 1152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok ich bin gerade ziemlich überfordert  smiley-confuse, muss mich da glaubig erstmal reinfinden.
Das E-Mail senden muss erstmal hinten ran gestellt werden, blick ja hier schon nicht mehr durch...

Du schreibst "if(inPin == LOW)"
meinst aber bestimmt "if(x== LOW)"
Logged

Grüße
Gunther

Offline Offline
Edison Member
*
Karma: 28
Posts: 2096
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sollte der Compiler doch eigentlich erkennen
x = digitalRead(inPin)

=> x = digitalRead(inPin);
Logged

Kein technischer Support über die Private Nachricht!

DE
Offline Offline
God Member
*****
Karma: 20
Posts: 696
| Germany | NRW |
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

 Hoi,
Quote
Ok ich bin gerade ziemlich überfordert  smiley-confuse, muss mich da glaubig erstmal reinfinden.
kurze Erklärung auf "Deutsch"  smiley-wink

int inPin = 2; deklariert eine Integer (also GanzZahl) Variable mit namen inPin mit dem realen Pin2 des Arduino
int x = 0;deklariert eine Integer (also GanzZahl) Variable mit namen x und setzt den Wert auf 0
int y = 0;deklariert eine Integer (also GanzZahl) Variable mit namen y und setzt den Wert auf 0

void setup() hier fängt der Setup Bereich an
{
pinMode(inPin,INPUT_PULLUP); hier setzt Du den PinMode (für Pin2) auf INPUT, und zwar mit _PULLUP
}

void loop() hier fängt die Enchilada an sich zu wiederholen
{
x = digitalRead(inPin) der Variable x wird der digital eingelesene Wert von Pin2 zugewiesen

if(x == 0) Wenn der Wert an Pin2 =  0 ist
{
y++;   zähle die Variable y einen rauf
}
delay(1000);  und warte 'ne Sekunde

   if(x == 1 && y==0) wenn das Signal an Pin2  nicht 0 ist UND die Vairbale y O ist dann
   {
   // E-mail senden
  
   y = 1;   ' setze die Variable y wieder auf 1
  
   }
   delay(1000);   warte nochmal 'ne Sekunde
} Ende der Loop, alles fängt wieder von vorne an


 
« Last Edit: February 14, 2014, 11:27:25 am by A.R.Ty » Logged

Dum spiro, spero - if you find my posting helpful, please click my Karma smiley
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Do you know A.R.T

Offline Offline
Edison Member
*
Karma: 38
Posts: 1152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das sollte der Kollege eingentlich wissen!
Meine C-Kenntnisse sollten denke ich reichen...


if(inPin == LOW)  wenn das Signal an Pin2 = LOW ist dann

Und genau das bedeutet die Zeile eben NICHT, das ist ja sein Fehler!
die variable inPin enthält die Pinummer, nicht den Wert.
Er fragt also ab if (2 == LOW)
« Last Edit: February 14, 2014, 11:16:49 am by guntherb » Logged

Grüße
Gunther

DE
Offline Offline
God Member
*****
Karma: 20
Posts: 696
| Germany | NRW |
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Notepad++ halt - Aufnahme gestartet (aus Versehen) - aber nur bemängeln reicht nicht, auch die Lösung nennen  smiley-cool
Logged

Dum spiro, spero - if you find my posting helpful, please click my Karma smiley
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Do you know A.R.T

Offline Offline
Edison Member
*
Karma: 38
Posts: 1152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Notepad++ halt - Aufnahme gestartet (aus Versehen) - aber nur bemängeln reicht nicht, auch die Lösung nennen  smiley-cool
Hab ich doch.
Du schreibst "if(inPin == LOW)"
meinst aber bestimmt "if(x== LOW)"
Logged

Grüße
Gunther

DE
Offline Offline
God Member
*****
Karma: 20
Posts: 696
| Germany | NRW |
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sorry - stand da drunter

Mea culpa  smiley-red
Logged

Dum spiro, spero - if you find my posting helpful, please click my Karma smiley
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Do you know A.R.T

Germany
Online Online
Faraday Member
**
Karma: 56
Posts: 2969
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Du schreibst "if(inPin == LOW)"

Der Compiler erlaubt sogar
Code:
  if (inPin=LOW)
was dazu führt, dass gar nichts mehr geht, weil danach inPin = 0 ist statt 2 !

Es heisst übrigens
const int inPin = 2;
damit der Compiler das merkt.
smiley-wink  Ich bin sicher, der Compiler merkt es auch so und grinst fies  smiley-wink
Logged

Pages: [1] 2   Go Up
Jump to: