123
Fork of Ventiel by
ventiel.cpp@1:d0b7c72ef864, 2014-08-20 (annotated)
- Committer:
- aglorenz
- Date:
- Wed Aug 20 11:48:36 2014 +0000
- Revision:
- 1:d0b7c72ef864
- Parent:
- 0:6139224eb903
- Child:
- 2:029f0291d1c4
123
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 | { |
aglorenz | 1:d0b7c72ef864 | 42 | if (v_var & (1 << n) != 0) com.putc(0x30 + n); |
rs27 | 0:6139224eb903 | 43 | wait_ms(10); |
aglorenz | 1:d0b7c72ef864 | 44 | } |
aglorenz | 1:d0b7c72ef864 | 45 | |
rs27 | 0:6139224eb903 | 46 | } |
rs27 | 0:6139224eb903 | 47 | |
rs27 | 0:6139224eb903 | 48 | void ventiel::reset(uint8_t val) |
rs27 | 0:6139224eb903 | 49 | { |
rs27 | 0:6139224eb903 | 50 | |
aglorenz | 1:d0b7c72ef864 | 51 | uint8_t wert1 = 0; |
aglorenz | 1:d0b7c72ef864 | 52 | |
aglorenz | 1:d0b7c72ef864 | 53 | pc.printf("\nmagnet.reset alt = %02x parameter = %d",v_var,val); |
aglorenz | 1:d0b7c72ef864 | 54 | |
rs27 | 0:6139224eb903 | 55 | if (val < 8) |
rs27 | 0:6139224eb903 | 56 | { |
rs27 | 0:6139224eb903 | 57 | // interne Variabel setzen |
aglorenz | 1:d0b7c72ef864 | 58 | wert1 = ~(1 << val); |
aglorenz | 1:d0b7c72ef864 | 59 | v_var &= wert1; |
rs27 | 0:6139224eb903 | 60 | } |
rs27 | 0:6139224eb903 | 61 | else |
rs27 | 0:6139224eb903 | 62 | { |
rs27 | 0:6139224eb903 | 63 | // alle Ventile auf 1 setzen |
rs27 | 0:6139224eb903 | 64 | v_var = 0x00; |
rs27 | 0:6139224eb903 | 65 | } |
aglorenz | 1:d0b7c72ef864 | 66 | |
aglorenz | 1:d0b7c72ef864 | 67 | pc.printf("\nmagnet.reset neu = %02x, verknuepfung = %02x\n",v_var,wert1); |
rs27 | 0:6139224eb903 | 68 | |
rs27 | 0:6139224eb903 | 69 | // Alle Kanäle ausschalten |
rs27 | 0:6139224eb903 | 70 | com.putc('9'); |
rs27 | 0:6139224eb903 | 71 | |
rs27 | 0:6139224eb903 | 72 | // aktive Kanäle einschalten |
rs27 | 0:6139224eb903 | 73 | for (uint8_t n = 0; n < 8; n++) |
rs27 | 0:6139224eb903 | 74 | { |
aglorenz | 1:d0b7c72ef864 | 75 | if (v_var & (1 << n) != 0) com.putc(0x30 + n); |
rs27 | 0:6139224eb903 | 76 | wait_ms(10); |
aglorenz | 1:d0b7c72ef864 | 77 | } |
aglorenz | 1:d0b7c72ef864 | 78 | |
aglorenz | 1:d0b7c72ef864 | 79 | |
aglorenz | 1:d0b7c72ef864 | 80 | |
rs27 | 0:6139224eb903 | 81 | } |
rs27 | 0:6139224eb903 | 82 | |
rs27 | 0:6139224eb903 | 83 | bool ventiel::get(uint8_t val) |
rs27 | 0:6139224eb903 | 84 | { |
aglorenz | 1:d0b7c72ef864 | 85 | if ((v_var & (1 << val)) == 0) return false; |
rs27 | 0:6139224eb903 | 86 | else return true; |
rs27 | 0:6139224eb903 | 87 | } |