Pages: 1 [2]   Go Down
Author Topic: Hilfe bei Projektrealisierung: Verfahren einer Ebene  (Read 1550 times)
0 Members and 1 Guest are viewing this topic.
Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1667
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

nimm einfach if (Zeit % 60 < 3000) und setz da drin eine bool getan = true
und bei if (Zeit % 60 > 5000) setzt Du die getan auf false.

gruß stefan

edit: Du rechnest ja vorher in minuten um, also 3 statt 3000 und 5 statt 5000.
« Last Edit: April 19, 2013, 06:18:53 am by Eisebaer » Logged

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

Also so

Code:
if (Zeit%360<2 ==true && Zeit%360>4 ==false);
    {
           x();
    }

wenn die Schleife aber innerhalb von 2 Minuten mehrmals abgefragt wird, wird auch der Inhalt der Schleife mehrmals ausgeführt oder wird Sie definitiv nur einmal durchlaufen, auch wenn der Programmcode mehrmals innerhalb von 2 Minuten an der Stelle ist.
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 49
Posts: 2756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
...das Problem eine Aktion alle x Minuten durchzuführen...
...löst man ab besten so, dass man sich merkt, wann es das letzte Mal ausgeführt worden war.

Code:
const byte X = 2; // Minuten
const unsigned long INTERVALL = 60000UL * X;
static unsigned long lasttime;

if ( millis() - lasttime >= INTERVALL ) {
 lasttime = millis();
 x();  // wird nur einmal je INTERVALL ausgeführt, egal wie oft oder selten loop dran kommt 
}

Die Differenz  ( millis() - lasttime ) hat auch den Vorteil, einen Überlauf nach 50 Tagen sicher zu überleben.

Das angehängte UL an der Konstanten 60000 stellt sicher, dass der Compiler die Konstante Multiplikation auc mit long integer macht.
lasttime muss entweder static oder als globale Variable definiert werden...
Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1667
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

Quote
wenn die Schleife aber innerhalb von 2 Minuten mehrmals abgefragt wird, wird auch der Inhalt der Schleife mehrmals ausgeführt oder wird Sie definitiv nur einmal durchlaufen, auch wenn der Programmcode mehrmals innerhalb von 2 Minuten an der Stelle ist.

eben, deswegen ja die statusvariable "getan" in meinem codeschnipsel.
natürlich ist es einfacher, mit intervall zu rechnen, aber ich verwende es beim takten mit dem ds1307 im sekundentakt, mit intervall geht das dann nicht. ich war zu faul, nachzulesen, wofür es hier gebraucht wird.  smiley-kiss

gruß stefan
Logged

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

Ich möchte in meiner Schaltung ein paar Taster integrieren.

Die Schaltung möchte ich wie folgt realisieren:
http://pgdev.pighixxx.com/ABC/SET/s1.pdf

Gleich die erste Seite links unten. Pushbutton to 5V.

Ich hab auf meinem Arduino ja nur einmal 5V. Also alle Schalter parallel schalten. IN sind ja die einzelnen Pins. Kann ich dann für 7 Taster nur einen Widerstand verwenden, weil die kommen ja auch alle an die gleiche Masseleitung. Oder brauchen die alle einen eigenen Widerstand und werden erst dann zusammengefasst.

Edit: Des Weiteren brauche ich noch eine Schaltung, mit der ich Netzspannung schalten kann. Wie bewerkstellige ich sowas?
« Last Edit: April 22, 2013, 05:31:30 am by Blabla » Logged

Munich/Germany
Offline Offline
God Member
*****
Karma: 9
Posts: 642
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich möchte in meiner Schaltung ein paar Taster integrieren.

Die Schaltung möchte ich wie folgt realisieren:
http://pgdev.pighixxx.com/ABC/SET/s1.pdf

Gleich die erste Seite links unten. Pushbutton to 5V.

Ich hab auf meinem Arduino ja nur einmal 5V. Also alle Schalter parallel schalten. IN sind ja die einzelnen Pins. Kann ich dann für 7 Taster nur einen Widerstand verwenden, weil die kommen ja auch alle an die gleiche Masseleitung. Oder brauchen die alle einen eigenen Widerstand und werden erst dann zusammengefasst.
Jeder Taster benötigt natürlich seinen eignene PullDown Widerstand. Ansonsten würden alle sieben Arduino Eingänge gleichzeitig auf einen beliebigen Tastendruck reagieren. Du kannst die Widerstände aber auch komplett einsparen, indem Du die Arduino internen PullUp Widerstände verwendest.
Die internen PullUps aktivierts Du so:
Code:
pinMode(pinnummer, INPUT_PULLUP);
bzw. wenn Du eine Arduino IDE vor 1.0 verwendest:
Code:
pinMode(pinnummer, INPUT);
digitalWrite(pinnummer, HIGH);
Du musst nur beachten, dass sich bei PullUp Widerständen die Logik umkehrt. Der Eingang ist HIGH bei offenem Taster und LOW wenn der Taster gedrückt wird.
Logged

_______
Manfred

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

Danke, gut zu wissen.

Habe zwar bereits die Widerstände gekauft und von der Logik her andersherum programmiert, also Button gedrückt=high. Aber ich würde mir eine Leitung pro Knopf sparen.

Dann müsste ich 5V an den einen Pin des Button anlegen und den anderen Pin des Buttons an digitalen Eingang hängen und als Pullup deklarieren diesen Pin. Und Schalter ist gedrückt, wenn der pin auf low ist. Alles richtig verstanden, oder?

Und dann gleich die nächste Frage: Ich habe 4 Elektromotoren. Spannung 12V und max. Stromaufnahme der vier 10A. Ich habe nun 4 Wechselrelais gekauft. Diese hier http://www.conrad.de/ce/de/product/502972/Miniatur-Leistungsrelais-Serie-FTR-H1-Takamisawa-FTR-H1-CD-012-12-VDC-1-Wechsler-Max-10-A-Min-5-VDC-Max-300-VDC?queryFromSuggest=true

Technisches Datenblatt: http://www.conrad.de/ce/de/product/502972/Miniatur-Leistungsrelais-Serie-FTR-H1-Takamisawa-FTR-H1-CD-012-12-VDC-1-Wechsler-Max-10-A-Min-5-VDC-Max-300-VDC?queryFromSuggest=true

Vier, weil ich an zwei die Plus Leitung meines Netzteils klemmen möchen und an die verbleibenden 2 die Minusleitung. Je nach Schaltung werden die Elektromotren dann links oder rechtsrum drehen.

Meine Frage: Ist meine "Berechnung" richtig, dass ich einen Schaltstrom von ca. 45mA für dieses Relais brauche? Auf der vorher verlinken Setcard ist die Schaltung ja abgebildet, ich weiß nur nicht was für einen Transistor ich brauche. Die BC337 NPN gibt es ja auch in verschiedenen Ausführen. Da wäre doch einer der etwas über 45mA bringt die richtige Wahl, oder?

Und  die aufgeführte Sperrdiode in der Setcard: Da reicht doch eine mit 100V, oder?

Vielen Dank soweit für eure Hilfe! Ist echt ein super Forum hier!
« Last Edit: April 22, 2013, 07:53:41 am by Blabla » Logged

Munich/Germany
Offline Offline
God Member
*****
Karma: 9
Posts: 642
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dann müsste ich 5V an den einen Pin des Button anlegen und den anderen Pin des Buttons an digitalen Eingang hängen und als Pullup deklarieren diesen Pin. Und Schalter ist gedrückt, wenn der pin auf low ist. Alles richtig verstanden, oder?
Nein.
Über den PullUp geht der Arduino Pin ja schon auf 5V. Den anderen Pin des Buttons musst Du demzufolge natürlich auf Masse legen. Drückst Du dann den Button, geht der Arduinoeingang auf LOW.
Logged

_______
Manfred

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

Dann müsste ich 5V an den einen Pin des Button anlegen und den anderen Pin des Buttons an digitalen Eingang hängen und als Pullup deklarieren diesen Pin. Und Schalter ist gedrückt, wenn der pin auf low ist. Alles richtig verstanden, oder?
Nein.
Über den PullUp geht der Arduino Pin ja schon auf 5V. Den anderen Pin des Buttons musst Du demzufolge natürlich auf Masse legen. Drückst Du dann den Button, geht der Arduinoeingang auf LOW.

Okay, danke. Jetzt hab auch ich es begriffen  smiley-grin

Wie sieht´s mit meiner anderen Frage aus?

Ich zitiere mich mal selbst:
Quote
Ich habe 4 Elektromotoren. Spannung 12V und max. Stromaufnahme der vier 10A. Ich habe nun 4 Wechselrelais gekauft. Diese hier http://www.conrad.de/ce/de/product/502972/Miniatur-Leistungsrelais-Serie-FTR-H1-Takamisawa-FTR-H1-CD-012-12-VDC-1-Wechsler-Max-10-A-Min-5-VDC-Max-300-VDC?queryFromSuggest=true

Technisches Datenblatt: http://www.conrad.de/ce/de/product/502972/Miniatur-Leistungsrelais-Serie-FTR-H1-Takamisawa-FTR-H1-CD-012-12-VDC-1-Wechsler-Max-10-A-Min-5-VDC-Max-300-VDC?queryFromSuggest=true

Vier, weil ich an zwei die Plus Leitung meines Netzteils klemmen möchen und an die verbleibenden 2 die Minusleitung. Je nach Schaltung werden die Elektromotren dann links oder rechtsrum drehen.

Meine Frage: Ist meine "Berechnung" richtig, dass ich einen Schaltstrom von ca. 45mA für dieses Relais brauche? Auf der vorher verlinken Setcard ist die Schaltung ja abgebildet, ich weiß nur nicht was für einen Transistor ich brauche. Die BC337 NPN gibt es ja auch in verschiedenen Ausführen. Da wäre doch einer der etwas über 45mA bringt die richtige Wahl, oder?

Und  die aufgeführte Sperrdiode in der Setcard: Da reicht doch eine mit 100V, oder?


Vielen Dank für eure Unterstützung smiley-wink
Logged

Pages: 1 [2]   Go Up
Jump to: