Automatický přepínač světel do auta

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
vojta_1
Příspěvky: 37
Registrován: 14 úno 2020, 23:20
Reputation: 0

Re: Automatický přepínač světel do auta

Příspěvek od vojta_1 » 15 kvě 2020, 20:32

Zdravím, automat jsem trochu vylepšil o voltmetr a měření teploty, ty to dvě veličiny se objevují na jednom řádku, ale má to jeden háček překrývají se.
Záměr byl takový, aby se teplota objevila na 2 min a pak by se objevil voltmetr na 1 min a tak by se to měnilo ve smyčce a tu je ten problém s kterým bych potřeboval pomoc, najde se někdo….., Díky

Kód: Vybrat vše

/**************************************************************************
 Zapojení:           pin:
 Arduino nano
 Oled 0.96 i2c       SDA-A4
                     SCL-A5
 RST                 4
 DS1307              SDA-A4
                     SCK-A5
 LDR                 A0 (modul)
 Vystup pro rele     A1,A2 (modul)                                           
 2x tlačitko         9,8 nastavení hodin
 DS18B20             5
voltmetr             A3   
R1                   100K
R2                   10K

Porovnání s vaším laboratorním DVM neshodoval, použijte přesný DMM k nalezení 
skutečného odporu R1 a R2, a nahraďte R1 = 100000,0 a R2 = 10000,0 v kódu těmito 
hodnotami. Dále zkontrolujte napájení 5V s laboratorním DVM na GND a 5V piny na desce 
Arduino. Mohlo by vám poskytnout méně (například 4,95 V), nahradit hodnotu do 
kódu vout = (hodnota * 5,0) / 1024,0 (tj. Nahradit hodnotu 5,0 skutečnému 
čtení V, v tomto případě 4,95 V). Dále se vždy snažte použít přesné 1% toleranční 
rezistory pro R1 a R2.
 **************************************************************************/
#include <Wire.h>                        
#include <SPI.h>
#include <Adafruit_GFX.h>                
#include <Adafruit_SSD1306.h>            
#include <OneWire.h>
#include <DallasTemperature.h>
 
#define ONE_WIRE_BUS 5
#define OLED_RESET 4
#define SSD1306_LCDHEIGHT 64

Adafruit_SSD1306 display(OLED_RESET);
 
#define button1    9                       // Tlačítko 
#define button2    8                       // Tlačítko 

OneWire oneWire(ONE_WIRE_BUS); 
DallasTemperature sensors(&oneWire); 

int analogInput = A3;

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

// 'auto Logo', 128x64px
  const unsigned char myBitmap [] PROGMEM = {
  0x00,0x00,0x00,0x00,0x00,0x18,0x01,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0xC1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x8A,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x8B,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x03,0x44,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x01,0xE4,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x02,0xF4,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x03,0x56,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x3F,0xF8,0x00,0x03,0x53,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x07,0xE0,0x0F,0xC0,0x02,0x61,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x40,0x0C,0x00,0x00,0x78,0x02,0xE1,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x40,0x18,0x00,0x00,0x0F,0xFE,0xC6,0x0D,0xF8,0x00,0x00,0x0F,0x80,0x00,0x00,0x00, 
  0x60,0x10,0x00,0x00,0x00,0x0F,0x98,0x18,0xF4,0x07,0xFF,0xF8,0xE0,0x00,0x00,0x00, 
  0x70,0x20,0x00,0x00,0x03,0xF9,0x18,0x28,0x1E,0x1C,0x00,0x00,0x18,0x00,0x00,0x00, 
  0x78,0x47,0x8F,0x00,0xDE,0xC5,0x8F,0x08,0x1E,0x30,0x00,0x00,0x0C,0x00,0x00,0x00, 
  0x48,0xDF,0x8F,0x0F,0xD9,0x81,0x03,0x08,0x0F,0x30,0xFB,0xFF,0x06,0x00,0x00,0x00, 
  0x48,0x9F,0x8F,0x97,0xAD,0x03,0x00,0x08,0x0F,0x33,0xF8,0xFF,0xC3,0x00,0x00,0x00, 
  0x79,0xBF,0x8F,0x9F,0xAF,0x81,0x80,0x08,0x0F,0x67,0xF8,0xFF,0xF9,0x80,0x00,0x00, 
  0x01,0x3F,0x8F,0xCF,0xA7,0x41,0x00,0x08,0x07,0x6F,0xF8,0xFF,0xFC,0xC0,0x00,0x00, 
  0x3F,0x7F,0x8F,0xC7,0xA7,0xB9,0x00,0x00,0x07,0xFF,0xF8,0xFF,0xFE,0x60,0x00,0x00, 
  0x10,0x3F,0x8F,0xE3,0x9B,0xB1,0xFC,0x7F,0x7F,0xDF,0xF8,0xFF,0xFF,0x30,0x00,0x00, 
  0x10,0x00,0x87,0xE1,0x8F,0xC1,0x02,0x5F,0xFF,0x9F,0xF8,0xFF,0xFF,0x18,0x00,0x00, 
  0x10,0x00,0x07,0xE1,0x83,0xB0,0x06,0x60,0x07,0x3F,0xF8,0xFF,0xFF,0x8F,0xFC,0x00, 
  0x10,0x00,0x03,0xC0,0x03,0xFC,0x0B,0xE0,0x16,0xFF,0xF8,0xFF,0xFF,0x80,0x3F,0x00, 
  0x30,0xFC,0x00,0x00,0x00,0x1F,0x0B,0x7F,0xFC,0x80,0xF8,0x00,0x1F,0x80,0x0D,0x80, 
  0x21,0xF4,0x00,0x00,0x00,0xFE,0x8B,0x00,0x00,0x80,0x00,0x00,0x00,0x03,0xFF,0x80, 
  0x23,0x74,0x00,0x00,0x01,0x8F,0x0B,0xBF,0x81,0xF0,0x00,0x00,0x00,0x00,0x7F,0x40, 
  0x23,0xFC,0x00,0x00,0x01,0x1F,0x0E,0x07,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x60, 
  0x27,0xFC,0x00,0x00,0x01,0xBF,0x06,0x00,0xE0,0x07,0xFF,0xFF,0xE0,0x01,0xBF,0xF0, 
  0x26,0x3C,0x00,0x00,0x00,0xE0,0x7E,0x03,0xC0,0x01,0x80,0x00,0xC0,0x00,0xC0,0x10, 
  0x3E,0x1E,0x00,0x00,0x00,0x7F,0xDA,0x07,0x1F,0x00,0xC0,0x01,0x80,0x00,0x60,0x10, 
  0x3E,0x1E,0x00,0x00,0x00,0x7F,0xDA,0x07,0x1F,0x00,0xC0,0x01,0x80,0x00,0x60,0x10, 
  0x06,0x0F,0x00,0xFC,0x00,0xC0,0x3E,0x1E,0x31,0xF0,0x40,0x03,0x1F,0xC0,0x60,0x10, 
  0x05,0x0F,0x01,0x66,0x00,0x80,0xCC,0x1C,0x7F,0xF8,0x60,0x02,0x31,0xF0,0x20,0x10,
  0x05,0x87,0x82,0xDF,0x01,0x81,0x8F,0x88,0x5F,0xFC,0x00,0x04,0x7F,0xFC,0x30,0x10, 
  0x06,0xEF,0xC3,0xB5,0x81,0x0E,0x7F,0x80,0xFC,0x7E,0x00,0x04,0x5F,0xF7,0x80,0x10, 
  0x03,0x3F,0xFF,0xC6,0xC1,0xF0,0x60,0x80,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x80,0x10, 
  0x03,0xFF,0x87,0xC2,0xC0,0x00,0x20,0x8F,0x70,0x1F,0x00,0x01,0xF8,0x1F,0x80,0x10, 
  0x03,0xFF,0x87,0xC2,0xC0,0xE0,0x20,0xFF,0x60,0x1F,0x00,0x03,0x70,0x0B,0x80,0x30, 
  0x01,0xFF,0x07,0xC6,0xE1,0x80,0xFE,0x7F,0x70,0x1F,0x8F,0xFF,0xD0,0x0B,0x80,0x60, 
  0x00,0x7E,0x07,0xDD,0x61,0x07,0x60,0x0E,0x70,0x17,0xFF,0xFF,0xD8,0x1F,0xC0,0x40, 
  0x00,0x00,0x07,0xF3,0xFF,0xFF,0x80,0x00,0x78,0x1F,0x80,0x00,0x58,0x37,0xFF,0xC0, 
  0x00,0x00,0x07,0xFE,0xC1,0xFC,0x00,0x00,0x7F,0xFF,0x00,0x00,0x58,0x6F,0x80,0x00, 
  0x00,0x00,0x07,0xC7,0x80,0x00,0x00,0x00,0x7F,0xFF,0x00,0x00,0x7F,0xFE,0x80,0x00, 
  0x00,0x00,0x03,0xFF,0x00,0x00,0x00,0x00,0x3F,0xFE,0x00,0x00,0x6F,0xFD,0x00,0x00, 
  0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x1F,0xFC,0x00,0x00,0x3F,0xFB,0x00,0x00  
};

void setup(void) {

  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
  display.clearDisplay(); 
  display.drawBitmap(0, 0, myBitmap, 128, 64, WHITE);
  display.display();
  delay(3500); 
 
  pinMode(A0,INPUT);               //Analog A2 in LDR Pin
  pinMode(A1,OUTPUT);              //Světla On/Off Pin - potkavací
  pinMode(A2,OUTPUT);              //Světla On/Off Pin - tlumená

  pinMode(analogInput, INPUT);
  
  pinMode(button1, INPUT_PULLUP);
  pinMode(button2, INPUT_PULLUP);
  delay(1000);
  
  display.clearDisplay();
  display.display();

  sensors.begin(); 
}

char Time[]     = "  :  :  ";
byte i, second, minute, hour;
 
void DS1307_display(){
// Convert BCD to decimal
  second = (second >> 4) * 10 + (second & 0x0F);
  minute = (minute >> 4) * 10 + (minute & 0x0F);
  hour   = (hour >> 4)   * 10 + (hour & 0x0F);

  Time[7]     = second % 10 + 48;
  Time[6]     = second / 10 + 48;
  Time[4]     = minute % 10 + 48;
  Time[3]     = minute / 10 + 48;
  Time[1]     = hour   % 10 + 48;
  Time[0]     = hour   / 10 + 48;

  draw_text(16, 5, Time, 2);
}
 
void blink_parameter(){
  byte j = 0;
  while(j < 10 && digitalRead(button1) && digitalRead(button2)){
    j++;
    delay(25);
  }
}
 
byte edit(byte x_pos, byte y_pos, byte parameter){
  char text[3];
  sprintf(text,"%02u", parameter);
  while(!digitalRead(button1));                      // Počkejte, až uvolníte tlačítko B1
  while(true){
    while(!digitalRead(button2)){                    // Pokud je stisknuto tlačítko B2
      parameter++;
      if(i == 3 && parameter > 23)                   // Pokud jsou hodiny> 23 ==> hodiny = 0
        parameter = 0;
      if(i == 4 && parameter > 59)                   // Pokud minuty> 59 ==> minuty = 0
        parameter = 0;
      sprintf(text,"%02u", parameter);
      draw_text(x_pos, y_pos, text, 2);
      delay(200);                                    // Počkejte 200ms
    }
    draw_text(x_pos, y_pos, "  ", 2);
    blink_parameter();
    draw_text(x_pos, y_pos, text, 2);
    blink_parameter();
    if(!digitalRead(button1)){                       // Pokud je stisknuto tlačítko B1
      i++;                                           // Přírůstek „in“ pro další parametr
      return parameter;                              // Vraťte hodnotu parametru a ukončete
    }
  }
}
 
void draw_text(byte x_pos, byte y_pos, char *text, byte text_size) {
  display.setCursor(x_pos, y_pos);
  display.setTextSize(text_size);
  display.print(text);
  display.display();
}

void loop () {

  display.drawLine(0, 0, 127, 0, WHITE);
  display.drawLine(0, 23, 127, 23, WHITE);
  display.drawLine(127, 0, 127, 63, WHITE);
  display.drawLine(127, 63, 0, 63, WHITE);
  display.drawLine(0, 63, 0, 0, WHITE);
  
  //display.setTextSize(2);               //vrchní řádek
  //display.setTextColor(WHITE);
  //display.setCursor(3, 26); 
  //display.println("[");
  display.setTextSize(2);                //spodní řádek
  display.setTextColor(WHITE);        
  display.setCursor(3, 46); 
  display.println("[");
  //display.setTextSize(2);              //vrchní řádek
  //display.setTextColor(WHITE);
  //display.setCursor(113, 26); 
  //display.println("]");
  display.setTextSize(2);               //spodní řádek
  display.setTextColor(WHITE);
  display.setCursor(113, 46); 
  display.println("]");
  
     if(!digitalRead(button1)){                   // Pokud je stisknuto tlačítko B1
     i = 0;
     while(!digitalRead(button1));                // Počkejte na uvolnění tlačítka B1
     while(true){
     while(!digitalRead(button2)){                // Při stisknutém tlačítku B2
     delay(200);                                  // Wait 200 ms
     }
     if(!digitalRead(button1))                    // Pokud je stisknuto tlačítko B1
     blink_parameter();                           // Bliká dané číslo
     display.setTextColor(WHITE, BLACK);             
       break;
   }
   hour   = edit(16, 5, hour);                     // Upravit hodiny
   minute = edit(52, 5, minute);                   // Upravit minuty 
   
// Convert decimal to BCD
   minute = ((minute / 10) << 4) + (minute % 10);
   hour = ((hour / 10) << 4) + (hour % 10);
   
// Write data to DS1307 RTC
    Wire.beginTransmission(0x68);               // Start I2C protokol s adresou DS1307
    Wire.write(0);                              // Adresa odeslat registr
    Wire.write(0);                              // Resetujte sekundy a spusťte oscilátor
    Wire.write(minute);                         // Napiše minutu
    Wire.write(hour);                           // Napiše hodinu
    Wire.endTransmission();                     // Zastavení přenosu a uvolnění I2C sběrnici
    delay(200);                                 // Počkejte 200ms
   }
 
  Wire.beginTransmission(0x68);                 // Start I2C protokol s adresou DS1307
  Wire.write(0);                                // Odeslat registrační adresu
  Wire.endTransmission(false);                  // I2C restart
  Wire.requestFrom(0x68, 7);                    // Vyžáda si 7 bajtů od DS1307 a uvolněte I2C sběrnici na konci čtení
  second = Wire.read();                         // Čtení sekund z registru 0
  minute = Wire.read();                         // Přečtěte si zápis z registru 1
  hour   = Wire.read();                         // Přečíst hodinu z registru 2

  DS1307_display();                             // Zobrazit čas
 
  delay(50);                                    // Počkejte 50ms
 
//Head Light On/Off
 int digital=analogRead(A0);                   // LDR in
     display.println(digital);
     if(digital>=700){
     digitalWrite(A1,LOW);                     // Zapne světla - potkavací
     display.clearDisplay();
     display.setTextSize(2);
     display.setTextColor(WHITE);
     display.setCursor(17, 27); 
     display.println("Z.Svetla");
     digitalWrite(A2,LOW);                    //  Zapne světla - tlumená
     delay(100);
     }
      else {
     digitalWrite(A1,HIGH);                  // Vypne světla - potkavací
     display.clearDisplay();
     display.setTextSize(2);
     display.setTextColor(WHITE);
     display.setCursor(13, 27);
     display.println("D.Sviceni");
     digitalWrite(A2,HIGH);                //  Vypne světla - tlumená
     delay(100);
}
      
// DS18B20
  float temp;
 
    sensors.requestTemperatures(); 
    temp = sensors.getTempCByIndex(0);
 
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(25,46);
    display.println(temp);
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(93, 46); 
    display.println("C");
    delay(1000);         

// voltmetr    
   float vout = 0.0;
   float vin = 0.0;
   float R1 = 100000.0;     // odpor R1 (100K)
   float R2 = 10000.0 ;     // odpor R1 (10K)
   int value = 0;
  
  value = analogRead(analogInput);
  vout = (value * 5.0) / 1024.0;
  vin = vout / (R2 / (R1 + R2));
  if (vin<0.09) {
  vin=0.0;
 }
   
   Serial.print("INPUT Voltage= ");
   Serial.println(vin, 2);
   display.setTextSize(2);
   display.setCursor(25, 46);
   display.println(vin, 2);
   display.setCursor(93, 46);
   display.println("V");
   delay(500);
  
} 

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Automatický přepínač světel do auta

Příspěvek od kiRRow » 16 kvě 2020, 11:00

Nevím co tam máš za displej a jak se ovládá ... ale všimni si že v jiných výpisech se displej vždy smaže příkazem display.clearDisplay(); ... ten ti u temp a volt chybí.

vojta_1
Příspěvky: 37
Registrován: 14 úno 2020, 23:20
Reputation: 0

Re: Automatický přepínač světel do auta

Příspěvek od vojta_1 » 16 kvě 2020, 13:08

Zdravím problem nemužu kompilovat žadny soubor,jediny který kompiluji je Blik u zbytku mi piše exit status 1,použivám IDE 1.8 win 10,jdu studovat na netu.....

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Automatický přepínač světel do auta

Příspěvek od kiRRow » 16 kvě 2020, 14:08

... já pak většinou zjistím, že mám blbě navolenou vývojovou desku z jiného projektu :D

vojta_1
Příspěvky: 37
Registrován: 14 úno 2020, 23:20
Reputation: 0

Re: Automatický přepínač světel do auta

Příspěvek od vojta_1 » 16 kvě 2020, 14:21

Tak jsem celé IDE přeinstaloval nahral znova knihovny a je to pořád stejne ,divné že kody s knihovnou U8glib nahraju a sknihovnou Adafruit_GFX ne ,desky stím nemaji nic společné mam UNO a nano a chová se to stejně prostě nejde to kompilovat ať tam deska je nebo není.

vojta_1
Příspěvky: 37
Registrován: 14 úno 2020, 23:20
Reputation: 0

Re: Automatický přepínač světel do auta

Příspěvek od vojta_1 » 16 kvě 2020, 14:28

Tak už to jede ,chyba byla v jedne knihovně Adafruit_I2CDevice.h......

Hafajs
Příspěvky: 151
Registrován: 10 bře 2019, 10:19
Reputation: 0

Re: Automatický přepínač světel do auta

Příspěvek od Hafajs » 16 kvě 2020, 16:37

kiRRow píše:
16 kvě 2020, 11:00
Nevím co tam máš za displej a jak se ovládá ... ale všimni si že v jiných výpisech se displej vždy smaže příkazem display.clearDisplay(); ... ten ti u temp a volt chybí.
Přesně, před kreslením nových hodnot, smaž display. Jinak nebude tak malé zobrazovalo rozptylovat pilota při řízení? Možná by to chtělo buď větší, třeba barevný a víc grafiky (jen vločka při námraze...) To jen jako nápad. A nebo velkou lupu ;)

vojta_1
Příspěvky: 37
Registrován: 14 úno 2020, 23:20
Reputation: 0

Re: Automatický přepínač světel do auta

Příspěvek od vojta_1 » 16 kvě 2020, 16:51

Voltmetr tam nebude necham tam teploměr, ten kod jede dobře,chtěl jsem to dát do Fabie1 do budíku uprostřed pod kontrolkama je místo a nebo to předělám na 5110 lcd .. :D

Kód: Vybrat vše

/**************************************************************************
 Zapojení:           pin:
 Arduino nano
 Oled 0.96 i2c       SDA-A4
                     SCL-A5
 RST                 4
 DS1307              SDA-A4
                     SCK-A5
 LDR                 A0 (modul)
 Vystup pro rele     A1,A2 (modul)                                           
 2x tlačitko         9,8 nastavení hodin
 DS18B20             5

 **************************************************************************/
#include <Wire.h>                        
#include <SPI.h>
#include <Adafruit_GFX.h>                
#include <Adafruit_SSD1306.h>            
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 5
#define OLED_RESET 4
#define SSD1306_LCDHEIGHT 64

Adafruit_SSD1306 display(OLED_RESET);
 
#define button1    9                       // Tlačítko 
#define button2    8                       // Tlačítko 

OneWire oneWire(ONE_WIRE_BUS); 
DallasTemperature sensors(&oneWire); 

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

// 'auto Logo', 128x64px
  const unsigned char myBitmap [] PROGMEM = {
  0x00,0x00,0x00,0x00,0x00,0x18,0x01,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0xC1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x8A,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x8B,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x03,0x44,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x01,0xE4,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x02,0xF4,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x00,0x00,0x00,0x03,0x56,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x00,0x3F,0xF8,0x00,0x03,0x53,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x00,0x07,0xE0,0x0F,0xC0,0x02,0x61,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x40,0x0C,0x00,0x00,0x78,0x02,0xE1,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  0x40,0x18,0x00,0x00,0x0F,0xFE,0xC6,0x0D,0xF8,0x00,0x00,0x0F,0x80,0x00,0x00,0x00, 
  0x60,0x10,0x00,0x00,0x00,0x0F,0x98,0x18,0xF4,0x07,0xFF,0xF8,0xE0,0x00,0x00,0x00, 
  0x70,0x20,0x00,0x00,0x03,0xF9,0x18,0x28,0x1E,0x1C,0x00,0x00,0x18,0x00,0x00,0x00, 
  0x78,0x47,0x8F,0x00,0xDE,0xC5,0x8F,0x08,0x1E,0x30,0x00,0x00,0x0C,0x00,0x00,0x00, 
  0x48,0xDF,0x8F,0x0F,0xD9,0x81,0x03,0x08,0x0F,0x30,0xFB,0xFF,0x06,0x00,0x00,0x00, 
  0x48,0x9F,0x8F,0x97,0xAD,0x03,0x00,0x08,0x0F,0x33,0xF8,0xFF,0xC3,0x00,0x00,0x00, 
  0x79,0xBF,0x8F,0x9F,0xAF,0x81,0x80,0x08,0x0F,0x67,0xF8,0xFF,0xF9,0x80,0x00,0x00, 
  0x01,0x3F,0x8F,0xCF,0xA7,0x41,0x00,0x08,0x07,0x6F,0xF8,0xFF,0xFC,0xC0,0x00,0x00, 
  0x3F,0x7F,0x8F,0xC7,0xA7,0xB9,0x00,0x00,0x07,0xFF,0xF8,0xFF,0xFE,0x60,0x00,0x00, 
  0x10,0x3F,0x8F,0xE3,0x9B,0xB1,0xFC,0x7F,0x7F,0xDF,0xF8,0xFF,0xFF,0x30,0x00,0x00, 
  0x10,0x00,0x87,0xE1,0x8F,0xC1,0x02,0x5F,0xFF,0x9F,0xF8,0xFF,0xFF,0x18,0x00,0x00, 
  0x10,0x00,0x07,0xE1,0x83,0xB0,0x06,0x60,0x07,0x3F,0xF8,0xFF,0xFF,0x8F,0xFC,0x00, 
  0x10,0x00,0x03,0xC0,0x03,0xFC,0x0B,0xE0,0x16,0xFF,0xF8,0xFF,0xFF,0x80,0x3F,0x00, 
  0x30,0xFC,0x00,0x00,0x00,0x1F,0x0B,0x7F,0xFC,0x80,0xF8,0x00,0x1F,0x80,0x0D,0x80, 
  0x21,0xF4,0x00,0x00,0x00,0xFE,0x8B,0x00,0x00,0x80,0x00,0x00,0x00,0x03,0xFF,0x80, 
  0x23,0x74,0x00,0x00,0x01,0x8F,0x0B,0xBF,0x81,0xF0,0x00,0x00,0x00,0x00,0x7F,0x40, 
  0x23,0xFC,0x00,0x00,0x01,0x1F,0x0E,0x07,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x60, 
  0x27,0xFC,0x00,0x00,0x01,0xBF,0x06,0x00,0xE0,0x07,0xFF,0xFF,0xE0,0x01,0xBF,0xF0, 
  0x26,0x3C,0x00,0x00,0x00,0xE0,0x7E,0x03,0xC0,0x01,0x80,0x00,0xC0,0x00,0xC0,0x10, 
  0x3E,0x1E,0x00,0x00,0x00,0x7F,0xDA,0x07,0x1F,0x00,0xC0,0x01,0x80,0x00,0x60,0x10, 
  0x3E,0x1E,0x00,0x00,0x00,0x7F,0xDA,0x07,0x1F,0x00,0xC0,0x01,0x80,0x00,0x60,0x10, 
  0x06,0x0F,0x00,0xFC,0x00,0xC0,0x3E,0x1E,0x31,0xF0,0x40,0x03,0x1F,0xC0,0x60,0x10, 
  0x05,0x0F,0x01,0x66,0x00,0x80,0xCC,0x1C,0x7F,0xF8,0x60,0x02,0x31,0xF0,0x20,0x10,
  0x05,0x87,0x82,0xDF,0x01,0x81,0x8F,0x88,0x5F,0xFC,0x00,0x04,0x7F,0xFC,0x30,0x10, 
  0x06,0xEF,0xC3,0xB5,0x81,0x0E,0x7F,0x80,0xFC,0x7E,0x00,0x04,0x5F,0xF7,0x80,0x10, 
  0x03,0x3F,0xFF,0xC6,0xC1,0xF0,0x60,0x80,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x80,0x10, 
  0x03,0xFF,0x87,0xC2,0xC0,0x00,0x20,0x8F,0x70,0x1F,0x00,0x01,0xF8,0x1F,0x80,0x10, 
  0x03,0xFF,0x87,0xC2,0xC0,0xE0,0x20,0xFF,0x60,0x1F,0x00,0x03,0x70,0x0B,0x80,0x30, 
  0x01,0xFF,0x07,0xC6,0xE1,0x80,0xFE,0x7F,0x70,0x1F,0x8F,0xFF,0xD0,0x0B,0x80,0x60, 
  0x00,0x7E,0x07,0xDD,0x61,0x07,0x60,0x0E,0x70,0x17,0xFF,0xFF,0xD8,0x1F,0xC0,0x40, 
  0x00,0x00,0x07,0xF3,0xFF,0xFF,0x80,0x00,0x78,0x1F,0x80,0x00,0x58,0x37,0xFF,0xC0, 
  0x00,0x00,0x07,0xFE,0xC1,0xFC,0x00,0x00,0x7F,0xFF,0x00,0x00,0x58,0x6F,0x80,0x00, 
  0x00,0x00,0x07,0xC7,0x80,0x00,0x00,0x00,0x7F,0xFF,0x00,0x00,0x7F,0xFE,0x80,0x00, 
  0x00,0x00,0x03,0xFF,0x00,0x00,0x00,0x00,0x3F,0xFE,0x00,0x00,0x6F,0xFD,0x00,0x00, 
  0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x1F,0xFC,0x00,0x00,0x3F,0xFB,0x00,0x00  
};

void setup(void) {

  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
  display.clearDisplay(); 
  display.drawBitmap(0, 0, myBitmap, 128, 64, WHITE);
  display.display();
  delay(3500); 
 
  pinMode(A0,INPUT);               //Analog A2 in LDR Pin
  pinMode(A1,OUTPUT);              //Světla On/Off Pin - potkavací
  pinMode(A2,OUTPUT);              //Světla On/Off Pin - tlumená

  pinMode(button1, INPUT_PULLUP);
  pinMode(button2, INPUT_PULLUP);
  delay(1000);
  
  display.clearDisplay();
  display.display();

  sensors.begin(); 
}

char Time[]     = "  :  :  ";
byte i, second, minute, hour;
 
void DS1307_display(){
// Convert BCD to decimal
  second = (second >> 4) * 10 + (second & 0x0F);
  minute = (minute >> 4) * 10 + (minute & 0x0F);
  hour   = (hour >> 4)   * 10 + (hour & 0x0F);

  Time[7]     = second % 10 + 48;
  Time[6]     = second / 10 + 48;
  Time[4]     = minute % 10 + 48;
  Time[3]     = minute / 10 + 48;
  Time[1]     = hour   % 10 + 48;
  Time[0]     = hour   / 10 + 48;

  draw_text(16, 5, Time, 2);
}
 
void blink_parameter(){
  byte j = 0;
  while(j < 10 && digitalRead(button1) && digitalRead(button2)){
    j++;
    delay(25);
  }
}
 
byte edit(byte x_pos, byte y_pos, byte parameter){
  char text[3];
  sprintf(text,"%02u", parameter);
  while(!digitalRead(button1));                      // Počkejte, až uvolníte tlačítko B1
  while(true){
    while(!digitalRead(button2)){                    // Pokud je stisknuto tlačítko B2
      parameter++;
      if(i == 3 && parameter > 23)                   // Pokud jsou hodiny> 23 ==> hodiny = 0
        parameter = 0;
      if(i == 4 && parameter > 59)                   // Pokud minuty> 59 ==> minuty = 0
        parameter = 0;
      sprintf(text,"%02u", parameter);
      draw_text(x_pos, y_pos, text, 2);
      delay(200);                                    // Počkejte 200ms
    }
    draw_text(x_pos, y_pos, "  ", 2);
    blink_parameter();
    draw_text(x_pos, y_pos, text, 2);
    blink_parameter();
    if(!digitalRead(button1)){                       // Pokud je stisknuto tlačítko B1
      i++;                                           // Přírůstek „in“ pro další parametr
      return parameter;                              // Vraťte hodnotu parametru a ukončete
    }
  }
}
 
void draw_text(byte x_pos, byte y_pos, char *text, byte text_size) {
  display.setCursor(x_pos, y_pos);
  display.setTextSize(text_size);
  display.print(text);
  display.display();
}

void loop () 
{
  display.drawLine(0, 0, 127, 0, WHITE);
  display.drawLine(0, 23, 127, 23, WHITE);
  display.drawLine(127, 0, 127, 63, WHITE);
  display.drawLine(127, 63, 0, 63, WHITE);
  display.drawLine(0, 63, 0, 0, WHITE);
  
  //display.setTextSize(2);               //vrchní řádek
  //display.setTextColor(WHITE);
  //display.setCursor(3, 26); 
  //display.println("[");
  display.setTextSize(2);                //spodní řádek
  display.setTextColor(WHITE);        
  display.setCursor(3, 46); 
  display.println("[");
  //display.setTextSize(2);              //vrchní řádek
  //display.setTextColor(WHITE);
  //display.setCursor(113, 26); 
  //display.println("]");
  display.setTextSize(2);               //spodní řádek
  display.setTextColor(WHITE);
  display.setCursor(113, 46); 
  display.println("]");
  
     if(!digitalRead(button1)){                   // Pokud je stisknuto tlačítko B1
     i = 0;
     while(!digitalRead(button1));                // Počkejte na uvolnění tlačítka B1
     while(true){
     while(!digitalRead(button2)){                // Při stisknutém tlačítku B2
     delay(200);                                  // Wait 200 ms
     }
     if(!digitalRead(button1))                    // Pokud je stisknuto tlačítko B1
     blink_parameter();                           // Bliká dané číslo
     display.setTextColor(WHITE, BLACK);             
       break;
   }
   hour   = edit(16, 5, hour);                     // Upravit hodiny
   minute = edit(52, 5, minute);                   // Upravit minuty 
   
// Convert decimal to BCD
   minute = ((minute / 10) << 4) + (minute % 10);
   hour = ((hour / 10) << 4) + (hour % 10);
   
// Write data to DS1307 RTC
    Wire.beginTransmission(0x68);               // Start I2C protokol s adresou DS1307
    Wire.write(0);                              // Adresa odeslat registr
    Wire.write(0);                              // Resetujte sekundy a spusťte oscilátor
    Wire.write(minute);                         // Napiše minutu
    Wire.write(hour);                           // Napiše hodinu
    Wire.endTransmission();                     // Zastavení přenosu a uvolnění I2C sběrnici
    delay(200);                                 // Počkejte 200ms
   }
 
  Wire.beginTransmission(0x68);                 // Start I2C protokol s adresou DS1307
  Wire.write(0);                                // Odeslat registrační adresu
  Wire.endTransmission(false);                  // I2C restart
  Wire.requestFrom(0x68, 7);                    // Vyžáda si 7 bajtů od DS1307 a uvolněte I2C sběrnici na konci čtení
  second = Wire.read();                         // Čtení sekund z registru 0
  minute = Wire.read();                         // Přečtěte si zápis z registru 1
  hour   = Wire.read();                         // Přečíst hodinu z registru 2

  DS1307_display();                             // Zobrazit čas
 
  delay(50);                                    // Počkejte 50ms
 
//Head Light On/Off
 int digital=analogRead(A0);                   // LDR in
     display.println(digital);
     if(digital>=700){
     digitalWrite(A1,LOW);                     // Zapne světla - potkavací
     display.clearDisplay();
     display.setTextSize(2);
     display.setTextColor(WHITE);
     display.setCursor(17, 27); 
     display.println("Z.Svetla");
     digitalWrite(A2,LOW);                    //  Zapne světla - tlumená
     delay(100);
     }
      else {
     digitalWrite(A1,HIGH);                  // Vypne světla - potkavací
     display.clearDisplay();
     display.setTextSize(2);
     display.setTextColor(WHITE);
     display.setCursor(13, 27);
     display.println("D.Sviceni");
     digitalWrite(A2,HIGH);                //  Vypne světla - tlumená
     delay(100);
}
      
// DS18B20
  float temp;
 
    sensors.requestTemperatures(); 
    temp = sensors.getTempCByIndex(0);
 
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(25,46);
    display.println(temp);
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(93, 46); 
    display.println("C");
    delay(1000);         
} 

Hafajs
Příspěvky: 151
Registrován: 10 bře 2019, 10:19
Reputation: 0

Re: Automatický přepínač světel do auta

Příspěvek od Hafajs » 17 kvě 2020, 12:18

Já totiž jezdil s vejskomerem na stejném zobrazovači a nic moc ;)

vojta_1
Příspěvky: 37
Registrován: 14 úno 2020, 23:20
Reputation: 0

Re: Automatický přepínač světel do auta

Příspěvek od vojta_1 » 07 zář 2021, 22:58

Zdravím, přidávám další kód pro automatické ovládaní světlometu v autě.

Kód se liší v tom, že za pomocí 2 tlačítek můžete nastavit hodnoty, kdy se mají zapnout a kdy vypnout světla a hodnoty se zapíšou do eeprom.
Kód jsem objevil na těchto stránkách: https://www.titantalk.com/threads/home- ... ol.377145/ , najdete jak fotky tak popis jak to funguje.
Použil jsem jen dvě relátka pro světla a časově jsem je rozdělil pro potkávací a tlumené světla a místo relátka 1 jsem zapojil LED která slouží pro indikací pro ukládání do eeprom.
Tady bych potřeboval poradit:
V kódu jsem nepochopil zapojení LDR - photocellPin = 7; //analogový pin,- u analogu se značí piny A nebo ne, divné je že to jede tak či tak.
Nevim jestli jsem pochopil zapojení u mikrospinaču 1-2, jedna nožka se zapojí na pin 2 a 5 a druhá na pin 4 a 7 a zapoji se na zem a nebo ne…
Nevím k čemu slouží rele 4 asi pro osvětlení přepínačů na palubce.
Tady je kod….

Kód: Vybrat vše

/*
Tato skica se používá s děličem napětí fotobuňky / rezistoru ke snímání úrovní okolního světla
pro ovládání obecné 4 reléové desky, kde „nízko“ na vstupním pinu relé desky
napájí cívku relé a zavírá NO kontakty. fotobuňka je připojena mezi 5v a
analogový pin, 10k relé je připojeno ze stejného analogového pinu k zemi
úrovně světla se odečítají v 1024 úrovních, poté se dělí 4, aby se povolily úrovně velikosti bajtů (255)
2 momentální mikrospinače se používají k nastavení hodnot zapnutého a vypnutého světla.
hodnoty nastavení úrovně osvětlení se zapisují do eeprom pokaždé, když jsou nastaveny tak, aby přežily stav vypnutí,
pokud stisknete obě tlačítka, kód obnoví výchozí hodnoty a zapíše do eeprom

https://www.titantalk.com/threads/home-mdae-auto-headlight-control.377145/
*/

#include <EEPROM.h>  // použijte knihovnu eeprom pro uložení úrovní

int led = 13;        // pin na desce LED, slouží k indikaci, ON/OFF světlel
int relay1pin = 9;   // relé 1 slouží k ovládání indikátoru na kolébce nebo palubní desce
int relay2pin = 10;  // relé 2 světlometu
int relay3pin = 11;  // relé 3 světlometu  
int relay4pin = 12;  // osvětlení přepinaču na palubce relé 4
int switch1pin1 = 2; // mikrospinače, nastavení úrovně světlo
int switch1pin2 = 4; // mikrospinače, nastavení úrovně světlo - tento pin je vynucen jako výstup na nízkou, aby byl použit jako přepínač "zem"
int switch2pin1 = 5; // mikrospinače, nastavení úrovně tma
int switch2pin2 = 7; // mikrospinače, nastavení úrovně tma - tento pin je vynucen jako výstup na nízkou, aby byl použit jako přepínač "zem"
int sw1state = 0;    // proměnná pro stav přepínače 1
int sw2state = 0;    // proměnná pro stav spínače 2
int onlevel;         // prahová úroveň, kde jsou relé 2,3,4 zapnuta (světla zapnuta)
int offlevel;        // prahová úroveň, kde jsou relé 2,3,4 vypnuta (světla vypnuta)
int defaultonlevel = 75;   // prahová úroveň, kde jsou sepnuta relé 2,3,4 (rozsvícená světla)
int defaultofflevel = 175; // prahová úroveň, kde jsou relé 2,3,4 vypnuta (světla vypnuta) v
int cycletime = 250;   // doba vzorkování fotorezitoru v ms
int offdelay = 10000;  // zpoždění čekání na převzorkování úrovně a poté zhasnutí světel, pokud je stále nad vypnutou úrovní v ms
int headlampstate = 0; // stav světlometů 0 = světla nesvítí 1 = světla svítí
int photocellPin = 7;  // analogový pin,LDR a 10K pulldown
int photocellReading;  // analogové čtení z děliče napětí fotobuňky/rezistoru (světelný senzor)

void setup(void) { 

Serial.begin(9600); 
pinMode(switch1pin1, INPUT_PULLUP);
pinMode(switch2pin1, INPUT_PULLUP); 
pinMode(switch1pin2, OUTPUT); 
pinMode(switch2pin2, OUTPUT);
pinMode(relay1pin, OUTPUT);
pinMode(relay2pin, OUTPUT);
pinMode(relay3pin, OUTPUT);

pinMode(relay4pin, OUTPUT);
digitalWrite(led, LOW);         // vypněte LED 
digitalWrite(switch1pin2, LOW); // nastaveno na úroveň země 0 voltů
digitalWrite(switch2pin2, LOW); // nastaveno na úroveň země 0 voltů
digitalWrite(relay1pin, LOW);   // zavřete kontakt relé 1, použijte pro indikátor pomlčky
digitalWrite(relay2pin, HIGH);  // rozepne kontakt relé 2, zhasne
digitalWrite(relay3pin, HIGH);  // rozepne kontakt relé 3, světla zhasnou
digitalWrite(relay4pin, HIGH);  // rozepnutý kontakt relé 4, světla vypnutá

onlevel = EEPROM.read(1);       // získejte prahovou úroveň (svítí) z eeprom a nastavte programovou proměnnou tak, aby odpovídala
offlevel = EEPROM.read(0);      // získejte prahovou úroveň (zhasne) z eeprom a nastavte programovou proměnnou tak, aby odpovídala
}

void loop(void) {
photocellReading = analogRead(photocellPin) / 4; // Světelný senzor vzorku pak vydělte 4, takže hodnoty mohou být uloženy v jednotlivých bajtech v eeprom
sw1state = digitalRead(switch1pin1); // poloha mikrospinače 1 
sw2state = digitalRead(switch2pin1); // poloha mikrospinače 2 

// Serial monitor
Serial.print(" Světla = "); 
Serial.print(headlampstate);
Serial.print(" SW1 = ");
Serial.print(sw1state);
Serial.print(" SW2 = ");
Serial.print(sw2state);
Serial.print(" ON = ");
Serial.print(onlevel);
Serial.print(" OFF = ");
Serial.print(offlevel);
Serial.print(" Čtení  = ");
Serial.println(photocellReading);

delay(cycletime);         // počkejte, poté zkontroluje polohy mikrospinaču a porovnejte hodnotu světelného senzoru s úrovněmi ON/OFF
if (sw1state == 0) {      // pokud se stiskl mikrospinač, nastaví se na úroven aktuální hodnoty světelného senzoru
onlevel = photocellReading;
EEPROM.write(1, onlevel);      // zapsat aktuální úroveň na eeprom umístění 1
digitalWrite(relay1pin, HIGH); // cvaknutí rele 1x, potvrďte stisknutí mikrospinače 
delay(500);
digitalWrite(relay1pin, LOW);
}
if (sw2state == 0) {    // pokud byli stisknute oba mikrospínače 
if (sw1state == 0) {    // pokud byli stisknute oba mikrospínače třikrát blikne LED
onlevel = defaultonlevel;
offlevel = defaultofflevel;
EEPROM.write(1, onlevel);  // zapsat aktuální úroveň na eeprom 1
EEPROM.write(0, offlevel); // zapsat aktuální úroveň na eeprom 0

digitalWrite(relay1pin, HIGH); 
delay(500);
digitalWrite(relay1pin, LOW);
delay(500);
digitalWrite(relay1pin, HIGH);
delay(500);
digitalWrite(relay1pin, LOW);
delay(500);
digitalWrite(relay1pin, HIGH);
delay(500);
digitalWrite(relay1pin, LOW);
}
else {
offlevel = photocellReading;   // pokud bylo stisknuto pouze sw2, vypněte úroveň na aktuální úroveň světla
EEPROM.write(0, offlevel);     // zapište aktuální off oroveň do umístění eeprom 1
digitalWrite(relay1pin, HIGH); // blikáním relé 1 zapnuto potvrďte stisknutí tlačítka
delay(500);
digitalWrite(relay1pin, LOW);
}
}
if (photocellReading > offlevel){ // zkontrolujte, zda je jasné, že je třeba vypnout světla
if (headlampstate == 1){          // podívejte se, jestli svítí světla, pokud ano, připravte se je vypnout
delay(offdelay);                  // počkejte, abyste se ujistili, že to nebylo jen chvilkové světlo
photocellReading = analogRead(photocellPin) / 4;   // přečtěte si fotobuňku a znovu ji vydělte 4
if (photocellReading > offlevel)headlampstate = 0; // pokud je po čekání stále dostatečně světlo .. vypněte je
}
}
if (photocellReading < onlevel){ //zjistěte, zda je dostatečně tma na rozsvícení
headlampstate = 1;              // nastavit proměnu tak, aby říkala zapnutí em
}
// logic to actuate relays
if (headlampstate == 0){       // nula znamená vypnout je
digitalWrite(led, LOW);        // LED indikátor ON 
digitalWrite(relay2pin, LOW);  // ON tlumená relé 2 vypnout světla
delay(800);                    // čas pro sepnutí rele
digitalWrite(relay3pin, LOW);  // ON potkavací relé 3 vypnout světla
delay(1500);                   // čas pro sepnutí rele
//digitalWrite(relay4pin, LOW);// rozepnout relé 4 vypnout světla
}
else {
digitalWrite(led, HIGH);         // cokoli kromě nuly znamená zapnout em ... zapnout LED na NANO pro indikaci
digitalWrite(relay3pin, HIGH);   // OFF tlumená relé 2 zapnete světla
delay(800);                      // čas pro sepnutí rele
digitalWrite(relay2pin, HIGH);   // OFF potkavací relé 3 zapnete světla
delay(1500);                     // čas pro sepnutí rele
//digitalWrite(relay4pin, HIGH); // zavřením relé 4 zapnete světla
}
} 

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 20 hostů