123
Fork of Ventiel by
ventiel.cpp@3:0a998c16eead, 2014-08-20 (annotated)
- Committer:
- rs27
- Date:
- Wed Aug 20 12:18:47 2014 +0000
- Revision:
- 3:0a998c16eead
- Parent:
- 2:029f0291d1c4
- Child:
- 4:0b90e095f3b7
14:18
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rs27 | 0:6139224eb903 | 1 | |
rs27 | 0:6139224eb903 | 2 | #include "ventiel.h" |
rs27 | 0:6139224eb903 | 3 | |
aglorenz | 1:d0b7c72ef864 | 4 | extern Serial pc; // definiert in main |
rs27 | 0:6139224eb903 | 5 | extern Serial com; // definiert in main |
rs27 | 0:6139224eb903 | 6 | |
rs27 | 0:6139224eb903 | 7 | //-------------------------------------------------------- |
rs27 | 0:6139224eb903 | 8 | // Construktor initialisiert das Ventiel |
rs27 | 0:6139224eb903 | 9 | ventiel::ventiel() |
rs27 | 0:6139224eb903 | 10 | { |
rs27 | 0:6139224eb903 | 11 | v_var = 0; |
rs27 | 0:6139224eb903 | 12 | } |
rs27 | 0:6139224eb903 | 13 | |
rs27 | 0:6139224eb903 | 14 | void ventiel::set(uint8_t val) |
rs27 | 0:6139224eb903 | 15 | { |
aglorenz | 1:d0b7c72ef864 | 16 | uint8_t wert1 = 0; |
aglorenz | 1:d0b7c72ef864 | 17 | |
aglorenz | 1:d0b7c72ef864 | 18 | pc.printf("\nmagnet.set alt = %02x parmeter = %d",v_var,val); |
aglorenz | 1:d0b7c72ef864 | 19 | |
aglorenz | 1:d0b7c72ef864 | 20 | |
rs27 | 0:6139224eb903 | 21 | if (val < 8) |
rs27 | 0:6139224eb903 | 22 | { |
rs27 | 0:6139224eb903 | 23 | // interne Variabel setzen |
aglorenz | 1:d0b7c72ef864 | 24 | wert1 = (1 << val); |
aglorenz | 1:d0b7c72ef864 | 25 | v_var |= wert1; |
rs27 | 0:6139224eb903 | 26 | } |
rs27 | 0:6139224eb903 | 27 | else |
rs27 | 0:6139224eb903 | 28 | { |
rs27 | 0:6139224eb903 | 29 | // alle Ventile auf 1 setzen |
rs27 | 0:6139224eb903 | 30 | v_var = 0xff; |
rs27 | 0:6139224eb903 | 31 | } |
aglorenz | 1:d0b7c72ef864 | 32 | |
aglorenz | 1:d0b7c72ef864 | 33 | pc.printf("\nmagnet.set neu = %02x verknuepfung = %02x\n",v_var,wert1); |
rs27 | 0:6139224eb903 | 34 | |
rs27 | 0:6139224eb903 | 35 | // Alle Kanäle ausschalten |
rs27 | 0:6139224eb903 | 36 | com.putc('9'); |
rs27 | 0:6139224eb903 | 37 | |
rs27 | 0:6139224eb903 | 38 | |
rs27 | 0:6139224eb903 | 39 | // aktive Kanäle einschalten |
rs27 | 0:6139224eb903 | 40 | for (uint8_t n = 0; n < 8; n++) |
rs27 | 0:6139224eb903 | 41 | { |
rs27 | 2:029f0291d1c4 | 42 | |
rs27 | 2:029f0291d1c4 | 43 | if ((v_var & (1 << n)) != 0) |
rs27 | 2:029f0291d1c4 | 44 | { |
rs27 | 3:0a998c16eead | 45 | char ch = 0x31 + n; |
rs27 | 2:029f0291d1c4 | 46 | com.putc(ch); |
rs27 | 2:029f0291d1c4 | 47 | pc.printf("\nZeichenausgabe = %c \n",ch); |
rs27 | 2:029f0291d1c4 | 48 | wait_ms(10); |
rs27 | 2:029f0291d1c4 | 49 | } |
rs27 | 2:029f0291d1c4 | 50 | |
aglorenz | 1:d0b7c72ef864 | 51 | } |
aglorenz | 1:d0b7c72ef864 | 52 | |
rs27 | 0:6139224eb903 | 53 | } |
rs27 | 0:6139224eb903 | 54 | |
rs27 | 0:6139224eb903 | 55 | void ventiel::reset(uint8_t val) |
rs27 | 0:6139224eb903 | 56 | { |
rs27 | 0:6139224eb903 | 57 | |
aglorenz | 1:d0b7c72ef864 | 58 | uint8_t wert1 = 0; |
aglorenz | 1:d0b7c72ef864 | 59 | |
aglorenz | 1:d0b7c72ef864 | 60 | pc.printf("\nmagnet.reset alt = %02x parameter = %d",v_var,val); |
aglorenz | 1:d0b7c72ef864 | 61 | |
rs27 | 0:6139224eb903 | 62 | if (val < 8) |
rs27 | 0:6139224eb903 | 63 | { |
rs27 | 0:6139224eb903 | 64 | // interne Variabel setzen |
aglorenz | 1:d0b7c72ef864 | 65 | wert1 = ~(1 << val); |
aglorenz | 1:d0b7c72ef864 | 66 | v_var &= wert1; |
rs27 | 0:6139224eb903 | 67 | } |
rs27 | 0:6139224eb903 | 68 | else |
rs27 | 0:6139224eb903 | 69 | { |
rs27 | 0:6139224eb903 | 70 | // alle Ventile auf 1 setzen |
rs27 | 0:6139224eb903 | 71 | v_var = 0x00; |
rs27 | 0:6139224eb903 | 72 | } |
aglorenz | 1:d0b7c72ef864 | 73 | |
rs27 | 2:029f0291d1c4 | 74 | pc.printf("\nmagnet.reset neu = %02x, verknuepfung = %02x\n",v_var,wert1); |
rs27 | 0:6139224eb903 | 75 | |
rs27 | 0:6139224eb903 | 76 | // Alle Kanäle ausschalten |
rs27 | 0:6139224eb903 | 77 | com.putc('9'); |
rs27 | 0:6139224eb903 | 78 | |
rs27 | 0:6139224eb903 | 79 | // aktive Kanäle einschalten |
rs27 | 0:6139224eb903 | 80 | for (uint8_t n = 0; n < 8; n++) |
rs27 | 0:6139224eb903 | 81 | { |
rs27 | 2:029f0291d1c4 | 82 | if ((v_var & (1 << n)) != 0) |
rs27 | 2:029f0291d1c4 | 83 | { |
rs27 | 3:0a998c16eead | 84 | char ch = 0x31 + n; |
rs27 | 2:029f0291d1c4 | 85 | com.putc(ch); |
rs27 | 2:029f0291d1c4 | 86 | pc.printf("\nZeichenausgabe = %c \n",ch); |
rs27 | 2:029f0291d1c4 | 87 | wait_ms(10); |
rs27 | 2:029f0291d1c4 | 88 | } |
aglorenz | 1:d0b7c72ef864 | 89 | } |
aglorenz | 1:d0b7c72ef864 | 90 | |
aglorenz | 1:d0b7c72ef864 | 91 | |
aglorenz | 1:d0b7c72ef864 | 92 | |
rs27 | 0:6139224eb903 | 93 | } |
rs27 | 0:6139224eb903 | 94 | |
rs27 | 0:6139224eb903 | 95 | bool ventiel::get(uint8_t val) |
rs27 | 0:6139224eb903 | 96 | { |
aglorenz | 1:d0b7c72ef864 | 97 | if ((v_var & (1 << val)) == 0) return false; |
rs27 | 0:6139224eb903 | 98 | else return true; |
rs27 | 0:6139224eb903 | 99 | } |