123

Dependents:  

Fork of Ventiel by Temp27

Committer:
rs27
Date:
Wed Aug 20 12:03:12 2014 +0000
Revision:
2:029f0291d1c4
Parent:
1:d0b7c72ef864
Child:
3:0a998c16eead
200814

Who changed what in which revision?

UserRevisionLine numberNew 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 2:029f0291d1c4 45 char ch = 0x30 + 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 2:029f0291d1c4 84 char ch = 0x30 + 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 }