Hallo zusammen,
ich verstehe nicht, woran es liegt. Wenn auf Pin A ein Signal kommt und auf Pin B zeitnah auch, zählt der nur vorwärts, also addiert. Beide kommen im gleichen Takt rein, müßte also innerhalb des Taktes +/-0 ergeben. Aber er addiert eben immer. Wenn allerdings nur auf Pin A ein Signal kommt, dann zieht er 1 ab und wenn nur auf Pin B ein Signal kommt, addiert er 1. Also solange im gleichen Takt nur 1 Signal kommt, macht er alles richtig und wenn zwei Signale kommen, dann addiert er nur.
Kann mir das einer erklären bzw. sagen, wo der Fehler liegt?
...und wieder LUA-Programmierung
Re: ...und wieder LUA-Programmierung
Mein Proramm:
if event.type == "program" then
mem.anzahl = 0
port.a = false
port.c = true
port.d = false
elseif event.type == "on" then
if pin.a then
mem.anzahl = mem.anzahl - 1
end
if pin.b then
mem.anzahl = mem.anzahl + 1
end
if mem.anzahl < 100 then
port.c = true
end
if mem.anzahl >= 150 then
port.c = false
end
digiline_send("LCD",mem.anzahl)
end
if event.type == "program" then
mem.anzahl = 0
port.a = false
port.c = true
port.d = false
elseif event.type == "on" then
if pin.a then
mem.anzahl = mem.anzahl - 1
end
if pin.b then
mem.anzahl = mem.anzahl + 1
end
if mem.anzahl < 100 then
port.c = true
end
if mem.anzahl >= 150 then
port.c = false
end
digiline_send("LCD",mem.anzahl)
end
Re: ...und wieder LUA-Programmierung
Habe gerade Anschlüsse A und B getauscht und umprogrammiert, keine Änderung!
- Desour
- Member
- Posts: 1473
- Joined: Thu Jun 19, 2014 19:49
- GitHub: Desour
- IRC: Desour
- In-game: DS
- Location: I'm scared that if this is too exact, I will be unable to use my keyboard.
Re: ...und wieder LUA-Programmierung
Signale kommen nie wirklich gleichzeitig an. Sie kommen im gleichen Takt (globalstep), aber nacheinander an. Dementsprechend gibt es zwei "on" events.
In pin stehen die momentanen Zustände der Ports drinnen. Wenn du wissen willst, von welcher Seite das Signal angegangen ist, sieh dir event genauer an (print(event), dann in's terminal sehen ist der leichteste weg).
Ich hoffe das hilft.
In pin stehen die momentanen Zustände der Ports drinnen. Wenn du wissen willst, von welcher Seite das Signal angegangen ist, sieh dir event genauer an (print(event), dann in's terminal sehen ist der leichteste weg).
Ich hoffe das hilft.
he/him; Codeberg; GitHub; ContentDB; public personal TODO list; "DS" is preferred (but often too short)
- orwell
- Member
- Posts: 958
- Joined: Wed Jun 24, 2015 18:45
- GitHub: orwell96
- IRC: orwell96_mt
- In-game: orwell
- Location: Raxacoricofallapatorius
Re: ...und wieder LUA-Programmierung
Was passiert ist folgendes:
-on event für pin a kommt
-pin a ist an, b ist aus
Zählt also runter.
-dann kommt das on event für pin b
-pin b ist an, pin a ist aber auch noch an.
Also +1 und -1
Insgesamt also einmal runtergezählt.
Was du eigentlich machen willst ist bei der sogenannten steigenden Flanke zählen. Was der Code tut ist aber immer wenn irgendein Event eintrifft abhängig vom Zustand (ein oder aus) der Leitung zu zählen.
Wie DS schon meinte, mit event.pin.name kriegst du den Pin( aber auch nur den Pin) der sich gerade geändert hat (dessen Anderung also das Event ausgelöst hat). Diesen musst du statt der Abfrage auf pin.a /pin.b verwenden.
-on event für pin a kommt
-pin a ist an, b ist aus
Zählt also runter.
-dann kommt das on event für pin b
-pin b ist an, pin a ist aber auch noch an.
Also +1 und -1
Insgesamt also einmal runtergezählt.
Was du eigentlich machen willst ist bei der sogenannten steigenden Flanke zählen. Was der Code tut ist aber immer wenn irgendein Event eintrifft abhängig vom Zustand (ein oder aus) der Leitung zu zählen.
Wie DS schon meinte, mit event.pin.name kriegst du den Pin( aber auch nur den Pin) der sich gerade geändert hat (dessen Anderung also das Event ausgelöst hat). Diesen musst du statt der Abfrage auf pin.a /pin.b verwenden.
Re: ...und wieder LUA-Programmierung
Danke für eure Hilfe und sorry, dass ich mich erst jetzt melde! Ihr meint bestimmt sowas:
event.pin.name == "A"
Damit würde es funktionieren, wenn ich nicht alles anders gemacht hätte. Jetzt habe ich 2 Microcontroller eingespart und jede Menge Leitungen...
event.pin.name == "A"
Damit würde es funktionieren, wenn ich nicht alles anders gemacht hätte. Jetzt habe ich 2 Microcontroller eingespart und jede Menge Leitungen...
Who is online
Users browsing this forum: No registered users and 6 guests