Mijn vraag
Ik ben bezig met het aansturen van ledjes via een i2c-kaart die aangesloten is op een Arduino.
De ledjes zitten op poort 0,1, 4 en 5 en hebben dus de waarde 1, 2, 16 en 32 in de byte die naar de kaart geschreven wordt.
Het aan- en uitzetten van individuele LEDjes is gelukt, maar alleen het uitschakelen van een uitgeschakelde led gaat fout, dan gaat-ie namelijk juist aan en daarna uit. Hij knippert dus.
De code hieronder laat dat gebeuren.
Mijn vraag is dus: welke operator hoort er bij het '^' te staan?
Waarheidstabel:
0 ^ 0 = 0
0 ^ 1 = 0
1 ^ 0 = 1
1 ^ 1 = 0
Relevante software en hardware die ik gebruik
Arduino
Wat ik al gevonden of geprobeerd heb
Veel logica operators en combinaties getest.
Ik ben bezig met het aansturen van ledjes via een i2c-kaart die aangesloten is op een Arduino.
De ledjes zitten op poort 0,1, 4 en 5 en hebben dus de waarde 1, 2, 16 en 32 in de byte die naar de kaart geschreven wordt.
Het aan- en uitzetten van individuele LEDjes is gelukt, maar alleen het uitschakelen van een uitgeschakelde led gaat fout, dan gaat-ie namelijk juist aan en daarna uit. Hij knippert dus.
De code hieronder laat dat gebeuren.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| #include <Wire.h> int i2ckaart=32; int wachttijd=1000; void setup() { Wire.begin(); // Koppel arduino aan i2c-bus als Master Serial.begin(9600); aan(0); delay(wachttijd); } void aan(int lampjes) { int lampjesbyte=0; Wire.beginTransmission(i2ckaart); Wire.requestFrom(i2ckaart,8); int huidigelampjes= Wire.read(); switch (lampjes) { case 1: lampjesbyte = huidigelampjes | 1; break; case 2: lampjesbyte = huidigelampjes | 2; break; case 3: lampjesbyte = huidigelampjes | 16; break; case 4: lampjesbyte = huidigelampjes | 32; break; } Wire.write(lampjesbyte); Wire.endTransmission(); } void uit(int lampjes) { Wire.beginTransmission(i2ckaart); Wire.requestFrom(i2ckaart,8); int huidigelampjes= Wire.read(); int lampjesbyte=huidigelampjes; switch (lampjes) { case 1: lampjesbyte = huidigelampjes ^ 1; break; case 2: lampjesbyte = huidigelampjes ^ 2; break; case 3: lampjesbyte = huidigelampjes ^ 16; break; case 4: lampjesbyte = huidigelampjes ^ 32; break; } Wire.write(lampjesbyte); Wire.endTransmission(); } void loop() { aan(1); uit(3); delay(wachttijd); } |
Mijn vraag is dus: welke operator hoort er bij het '^' te staan?
Waarheidstabel:
0 ^ 0 = 0
0 ^ 1 = 0
1 ^ 0 = 1
1 ^ 1 = 0
Relevante software en hardware die ik gebruik
Arduino
Wat ik al gevonden of geprobeerd heb
Veel logica operators en combinaties getest.
[ Voor 0% gewijzigd door GeeBee op 04-06-2019 07:21 . Reden: Waarheidtabel aangevuld ]
Woof, woof, woof! That's my other dog imitation.