////////////////////////////////////////
// DEKODER TONW DTMF CM8870, AUTOR RADBRAD, LUCIDSCIENCE.COM
////////////////////////////////////////
// ZMIENNE
int dtmf;
int cntr;
String dial(16);
void setup() {
  dial = "";
  // WEJCIOWY PORT CYFROWY UKADU CM8870
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  // PIN GOTOWOCI DANYCH UKADU CM8870
  pinMode(6, INPUT);
  // INICJALIZACJA SZEREGOWEGO EKRANU LCD
  Serial.begin(9600);
  delay(100);
  // SKASOWANIE EKRANU LCD
  Serial.print(12, BYTE);
  delay(100);
  Serial.print(12, BYTE);
  delay(100);
  // WCZENIE PODWIETLENIA
  Serial.print(17, BYTE);
  delay(100);
  // WYSANIE KOMUNIKATU O GOTOWOCI
  Serial.print("* SYSTEM GOTOWY *");
}
// WYWIETLENIE DANYCH Z DEKODERA DTMF
void loop() {
  // OCZEKIWANIE NA SYGNA GOTOWOCI DANYCH
  if (digitalRead(6) == HIGH) {
    // DEKODOWANIE DANYCH CM8870
    dtmf = 0;
    if (digitalRead(2) == HIGH) dtmf = dtmf + 1;
    if (digitalRead(3) == HIGH) dtmf = dtmf + 2;
    if (digitalRead(4) == HIGH) dtmf = dtmf + 4;
    if (digitalRead(5) == HIGH) dtmf = dtmf + 8;
    // SKASOWANIE EKRANU LCD
    Serial.print(12, BYTE);
    delay(100);
    // WYWIETLENIE LICZNIKA
    Serial.print("ILOSC DANYCH = ");
    Serial.print(cntr);
    // NOWY WIERSZ
    Serial.print(13, BYTE);
    // WYWIETLENIE DANYCH DTMF
    if (dtmf == 1) dial = dial + "8";
    if (dtmf == 2) dial = dial + "4";
    if (dtmf == 3) dial = dial + "#";
    if (dtmf == 4) dial = dial + "2";
    if (dtmf == 5) dial = dial + "0";
    if (dtmf == 6) dial = dial + "6";
    if (dtmf == 8) dial = dial + "1";
    if (dtmf == 9) dial = dial + "9";
    if (dtmf == 10) dial = dial + "5";
    if (dtmf == 12) dial = dial + "3";
    if (dtmf == 13) dial = dial + "*";
    if (dtmf == 14) dial = dial + "7";
    Serial.print(dial);
    // ZWIKSZENIE LICZNIKA
    cntr++;
  }
}

