mac112
Vytvořené odpovědi
- 
		AutorPříspěvky
- 
		
			
				
Boban ÚčastníkAhoj mohl by si prosim poskytnout odkaz na knihovnu OneWire co pouzivas? mam v planu k Attiny pripojit to same cidlo a jeste modul 433MHz a pak to posilat do UNA a teplotu zobrazovat na displeji. Pripadne kdyby si sem moch dat tvuj kod pro inspiraci bylo by to fajn. Diky Boban staricek ÚčastníkMám stejný problém. Našel jsi nějaké řešení? 
 Používám stejný modul, stejnou libqmax ÚčastníkAno, to je muj problem. Teda asi spis byl. Zjistil jsem ze to blikani asi zpusobuji nestinene vodice k diodam(pouzivam ploche kabely a jsou polozene pres sebe). Kdyz k sobe ty kabely pritlacim tak to zacne blikat, kdyz je dam od sebe tak to sviti vpohode. tibordoma ÚčastníkKolega mi poradil, že keďže podľa tých obrázkov na Merkur board je vždy 5V v strede, tak keď to dám aj opačne, tak to nezhorí. Tak som skúsil obidve kombinácie a jedna z nich fungovala. Takže teraz som sa pustil do rozbehávania senzora – http://oi59.tinypic.com/34j7vw4.jpg – hore na dopravníku na červenej vodorovnej „tyči“. Tu je označený ako QRDx1 – http://i.snag.gy/Su8QI.jpg . Pripojil som to na Arduino na analógový port a sledoval výstup senzora. Predpokladám, že by to mal byť RGB senzor, nakoľko v popise dopravníka je toto „Set obsahuje mechanické části a je vybaven infa čidly, RGB senzorem, řídící elektronikou a displejem 4×20 mm.“ Ale ako rozoznávať farby, na to som neprišiel, ani som si nevšimol nejaké zmeny vo výstupe pri rozdielnych farbách. Skôr sa mi zdá, že reaguje všeobecne na svetlo. Možno to nesprávne používam. Skúsim vypýtať od Merkuru datasheet k tomu senzoru. Zbyšek Voda ÚčastníkV pohodě. 
 Buď si koupíte nějaký relé shield a pak jednotlivá relé ovládáte třeba tak, že je zapínáte/vypínáte LOW/HIGH na pinu, nebo si koupíte relé, připojíte k němu nějaký budič (třeba ULN2003a) a ovládáte je pomocí něho.krokodile ÚčastníkSuper, díky za odpověď. Jak se potom řeší to napojení na relé? Omlouvám se za hloupé dotazy, ale nejsem problematikou se moc nezabývám… Zbyšek Voda ÚčastníkTohle zvládne jakékoliv Arduino 🙂 Klidně Nano, UNO… 
 Ještě bych k tomu přidal nějaký modul reálného času (RTC) pro lepší přehled v čase.Zbyšek Voda ÚčastníkJsem rád, že se problém vyřešil 🙂 Decadics ÚčastníkTak už jsem to vyřešil. Chyběla mi zem na pinu RW u LCD displeje. Nicméně teď budu řešit problém, jak to rozchodit přes ten I2C převodník, u kterého se mi to chovalo stejně. každopádně jsem rád, že LCD je v pořádku a příště si nejprve pořádně překontroluju zapojení, než budu někam něco psát. Díky za Váš čas. 😉 Pidrman ÚčastníkDobrý den Tak jsem program upravil. Snad dobře. #include <LiquidCrystal.h> 
 #include <TimerOne.h>// buttons code 
 #define btnRIGHT 0
 #define btnUP 1
 #define btnDOWN 2
 #define btnLEFT 3
 #define btnSELECT 4
 #define btnNONE 5// directions 
 #define FORWARD HIGH
 #define BACKWARD LOW// debounce time (milliseconds) 
 #define DEBOUNCE_TIME 200// PINs for Pololu controller 
 #define PIN_STEP 2
 #define PIN_DIR 3// lookup table speed – ticks (interrupts) 
 const int speed_ticks[] = {-1, 600, 300, 200, 150, 120, 100, 86, 75, 67, 60, 55, 50, 46, 43};// global variables 
 LiquidCrystal lcd(8, 9, 4, 5, 6, 7);int actual_speed; 
 int actual_direction;int ticks; 
 unsigned long tick_count;int button; 
 boolean debounce;
 int previous_time;// custom LCD square symbol for progress bar 
 byte square_symbol[8] = {
 B11111,
 B11111,
 B11111,
 B11111,
 B11111,
 B11111,
 B11111,
 };// string constants 
 char forward_arrow[] = „->“;
 char backward_arrow[] = „<-„;void setup() { // init the timer1, interrupt every 0.1ms 
 Timer1.initialize(100);
 Timer1.attachInterrupt(timerIsr);// init LCD and custom symbol 
 lcd.begin(16, 2);
 lcd.setCursor(0,0);
 lcd.createChar(0, square_symbol);// pins direction 
 pinMode(PIN_STEP, OUTPUT);
 pinMode(PIN_DIR, OUTPUT);// initial values 
 actual_speed = 0;
 actual_direction = FORWARD;
 tick_count = 0;
 ticks = -1;
 debounce = false;digitalWrite(PIN_DIR, actual_direction); 
 updateLCD();
 }void loop() { // check if debounce active 
 if(debounce) {
 button = btnNONE;
 if(millis() > previous_time + DEBOUNCE_TIME) debounce = false;
 } else button = read_buttons();// if a button is pressed, start debounce time 
 if(button != btnNONE) {previous_time = millis(); 
 debounce = true;
 }// check which button was pressed 
 switch(button) {case btnUP: 
 increase_speed();
 break;
 case btnDOWN:
 decrease_speed();
 break;
 case btnLEFT:
 change_direction(BACKWARD);
 break;
 case btnRIGHT:
 change_direction(FORWARD);
 break;
 case btnSELECT:
 emergency_stop();
 break;
 }// finally update the LCD 
 updateLCD();
 }// increase speed if it’s below the max (70) 
 void increase_speed() {if(actual_speed < 70) { 
 actual_speed += 5;
 tick_count = 0;
 ticks = speed_ticks[actual_speed / 5];
 }
 }// decrease speed if it’s above the min (0) 
 void decrease_speed() {if(actual_speed > 0) { 
 actual_speed -= 5;
 tick_count = 0;
 ticks = speed_ticks[actual_speed / 5];
 }
 }// change direction if needed 
 void change_direction(int new_direction) {if(actual_direction != new_direction) { 
 actual_direction = new_direction;
 digitalWrite(PIN_DIR, actual_direction);
 }
 }// emergency stop: speed 0 
 void emergency_stop() {
 actual_speed = 0;
 tick_count = 0;
 ticks = speed_ticks[actual_speed / 5];
 }// update LCD 
 void updateLCD() {// print first line: 
 // Speed: xxxRPM -> (or <-)
 lcd.setCursor(0,0);
 lcd.print(„SPEED: „);
 lcd.print(actual_speed);
 lcd.print(„RPM „);lcd.setCursor(13,0); 
 if(actual_direction == FORWARD) lcd.print(forward_arrow);
 else lcd.print(backward_arrow);// print second line: 
 // progress bar [##### ]
 // 15 speed steps: 0 – 5 – 10 – … – 70
 lcd.setCursor(0,1);
 lcd.print(„[„);for(int i = 1; i <= 14; i++) { if(actual_speed > (5 * i) – 1) lcd.write(byte(0)); 
 else lcd.print(“ „);
 }lcd.print(„]“); 
 }// timer1 interrupt function 
 void timerIsr() {if(actual_speed == 0) return; tick_count++; if(tick_count == ticks) { // make a step 
 digitalWrite(PIN_STEP, HIGH);
 digitalWrite(PIN_STEP, LOW);tick_count = 0; 
 }
 }// read buttons connected to a single analog pin 
 int read_buttons() {int adc_key_in = analogRead(0); if (adc_key_in > 1000) return btnNONE; 
 if (adc_key_in < 50) return btnRIGHT;
 if (adc_key_in < 195) return btnUP;
 if (adc_key_in < 380) return btnDOWN;
 if (adc_key_in < 555) return btnLEFT;
 if (adc_key_in < 790) return btnSELECT;
 }Ale problém přetrvává 🙁 Zbyšek Voda ÚčastníkDobrý den, to rozhodně schválně není. Vaše chyba je ale podivná. Zkoušel jsem ji reprodukovat ve více prohlížečích, ale všude mi zobrazování funguje správně (ať už stránkování na úvodní stránce, nebo v Novinky). Když půjdete třeba sem: https://bastlirna.hwkitchen.cz/page/3/, zobrazí se vám třetí stránka novinek, nebo úvodní stránka? Zbyšek Voda ÚčastníkDobrý den, když tak zběžně koukám na váš program, napadá mě jedna věc. Snad to bude ono. Na začátku máte: Timer1.initialize(100); Timer1.attachInterrupt(timerIsr);což zapříčiní, že se bude funkce timerIsr volat každých 100µs. Funci timerIsr máte definovanou jako void timerIsr() { if(actual_speed == 0) return; tick_count++; if(tick_count == ticks) { // make a step digitalWrite(PIN_STEP, HIGH); digitalWrite(PIN_STEP, LOW); tick_count = 0; } }čili každých 100µs se proměnná tick_count zvýší o jednu (pokud neplatí speciální podmínky – ty teď ale přeskočme). Proměnná tick_count je typu int. int tick_count;a to by mohl být ten problém. Proměnné typu int mohou uchovávat čísla od -32.768 do 32.767. Vy ale nemáte nijak pojištěno, co se stane, když vám tick_count přeteče. Jako první krok zkuste použít jiný typ – například unsigned long, který může mít rozsah od 0 do 4.294.967.295. unsigned long tick_count;Pokud se problém vyřeší (respektive se o hodně odloží), budeme mít jistotu, že to byl skutečně problém použitého datového typu. Poté můžete zkusit dodělat detekci přetečení proměnné. Jelikož ale při zvýšení každých 100µs „vydrží“ tato proměnná počítat asi pět dní, neviděl bych to jako nutnost 🙂 Zbyšek Voda ÚčastníkDobrý den, problémem v rychlosti myslíte to, že se řádky rozsvěcují moc pomalu a nevznikne pak dojem, že svítí všechny naráz? Zkuste nám sem poslat váš program, to by také mohlo pomoci. Dan ÚčastníkOdpovím si tedy sám, na anglickém fóru mi poradili v mžiku. Attiny85 musím provozovat na 8Mhz a výš. Přepnul jsem obvod na vnitřní oscilátor 8 MHz a vše začalo fungovat k naprosté spokojenosti. 🙂 HadrDisk ÚčastníkTrošku upravená verze 0.0002 :)) int soft = 7; //zapnutí trafa přes odpor 
 int tr = 8; //zapnutí trafa bez odporu
 int repro = 9; //zpožděné připojení repro + ochrana před DC
 int buttonPin = 10; //Tlačítko power
 int led = 13; //Kontrolka (při DC na výstupu zesilovače bliká do resetu obvodu)
 int DC1 = analogRead(A0); //ochrana L kanálu
 int DC2 = analogRead(A1); //ochrana P kanáluboolean currentState = LOW;//stroage for current button state 
 boolean lastState = LOW;//storage for last button state
 boolean ledState = LOW;//storage for the current state of the LED (off/on)void setup() { 
 pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT
 pinMode(repro, OUTPUT);
 pinMode(soft, OUTPUT);
 pinMode(tr, OUTPUT);
 pinMode(led, OUTPUT);
 Serial.begin(9600);} void loop() { 
 int DC1 = analogRead(A0);
 int DC2 = analogRead(A1);
 Serial.println(DC2); //informace pro nastavení napětí
 delay(100);currentState = digitalRead(buttonPin); while ((DC1 > 800 && lastState < 800)) { 
 digitalWrite(tr, LOW);
 digitalWrite(soft, LOW);
 digitalWrite(repro, LOW);
 digitalWrite(led, HIGH);
 delay(200);
 digitalWrite(led, LOW);
 delay(200);
 }while (DC2 > 800 && lastState < 800) { 
 digitalWrite(tr, LOW);
 digitalWrite(soft, LOW);
 digitalWrite(repro, LOW);
 digitalWrite(led, HIGH);
 delay(200);
 digitalWrite(led, LOW);
 delay(200);
 }if (currentState == HIGH && lastState == LOW) { 
 delay(10);//crude form of button debouncing
 if (ledState == HIGH) {
 digitalWrite(repro, LOW);
 delay(200);
 digitalWrite(soft, LOW);
 digitalWrite(led, LOW);
 digitalWrite(tr, LOW);
 ledState = LOW;
 } else {
 digitalWrite(led, HIGH);
 digitalWrite(soft, HIGH);
 delay(1000);
 digitalWrite(tr, HIGH);
 delay(60);
 digitalWrite(soft, LOW);
 delay(3000);
 digitalWrite(repro, HIGH);
 ledState = HIGH;
 }
 }
 lastState = currentState;
 }Ocením nějaké návrhy na zjednodušení a případný reset blikající LEDky dlouhým stiskem tlačítka :)) Předem díky za nápady :)) Decadics ÚčastníkDěkuji za rady, mrknu, jestli je vše, co jste popsal v pořádku. Pokud ano, koupím raději nový a originální arduino displej. Hzeký den. 🙂 Zbyšek Voda ÚčastníkProgram bude v pořádku. Mě tohle normálně fungovalo. 
 Nabízí se tedy hledat problém někde jinde. Koukal jsem třeba sem: http://stackoverflow.com/questions/9217084/arduino-lcd-only-showing-black-boxes-on-bottom-rowNabízí tam vícero tipů. - Zkontrolovat zapojení – jestli nemáte nějaký vadný vodič.
- Zkontrolovat, jestli jsou piny dobře připájené k LCD.
- Před lcd.begin() dát delay(1000) – display by mohl potřebovat čas na naběhnutí
- Ujistěte se, jestli se program skutečně nahrál do Arduina (zkuste třeba nahrát blikání LEDkou a pak zase zpět na LCD hello world)
 Takhle na dálku mě nenapadá nic dalšího. Decadics ÚčastníkDěje. Při otáčení poťákem se mění kontrast. Od svetlého do nejtmavšího. Regulací kontrastu to asi nebude. Na netu jsem našel vícero lidí, kteří měli stejný problém. Jen se to na těch fórech nikdy nedořešilo do konce. Takže se jedná o obvyklý problém, ale neznám řešení. Možná bude něco špatného v kódu, nebo bude špatná knihovna? Zbyšek Voda ÚčastníkTakže když točíte kontrastním potenciometrem, tak se nic neděje? 
 Přijde mi, že toto dělá displej, když má nastavený maximální kontrast.Decadics ÚčastníkDobrý den, zařízení jsem již rozebral a oddělil jsem I2C převodník od LCD s tím, že se pokusím o klasické zapojení bez I2C převodníku abych vyloučil jeho poškození. Bohužel, problém přetrvává i bez I2C převodníku. Displej zobrazuje to samé, co předtím. Z I2C modulu jsem použil jen potenciometr abych mohl štelovat kontrast. Foto: http://decadics.rajce.idnes.cz/ARDUINO_-_LCD_PROBLEM#ARDUINO2.jpg Zdroják: /* 
 LiquidCrystal Library – Hello WorldDemonstrates the use a 16×2 LCD display. The LiquidCrystal 
 library works with all LCD displays that are compatible with the
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.This sketch prints „Hello World!“ to the LCD 
 and shows the time.The circuit: 
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)Library originally added 18 Apr 2008 
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom IgoeThis example code is in the public domain. http://www.arduino.cc/en/Tutorial/LiquidCrystal 
 */// include the library code: 
 #include <LiquidCrystal.h>// initialize the library with the numbers of the interface pins 
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);void setup() { 
 // set up the LCD’s number of columns and rows:
 lcd.begin(16, 2);
 // Print a message to the LCD.
 lcd.print(„hello, world!“);
 }void loop() { 
 // set the cursor to column 0, line 1
 // (note: line 1 is the second row, since counting begins with 0):
 lcd.setCursor(0, 1);Zbyšek Voda ÚčastníkDobrý den, můžete sem postnout fotku vašeho zapojení? 🙂 jurda23 Účastníkproblem s web byl vyřešen nevšimnul jsem si že používám porty 10, 11, 12, 13 ktere potřebuje ethernet shild [code] 
 #include <SD.h>
 #include <Ethernet.h>
 #include <SPI.h>
 #include <SoftwareSerial.h>
 #include <MemoryFree.h>
 #include <LCD.h>
 #include <LiquidCrystal.h>
 #include <LiquidCrystal_I2C.h>
 #include <OneWire.h>
 #include <Wire.h>
 #include <DallasTemperature.h>float T00; 
 float T01;
 float T02;
 //float T03;
 // zde si upravte podle sebe
 byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0xC4, 0x36 };
 // IP adresabyte ip[] = { 192, 168, 99, 150 }; 
 byte gateway[] = { 192, 168, 99, 1 };
 byte subnet[] = { 255, 255, 255, 0 };
 String readString;
 // port
 EthernetServer server(80);
 //RGBLED
 int bluePin1 = 40; //Digital Pin fĂĽr Blaue LED1 in RGB-LED
 int greenPin1 = 41; //Digital Pin fĂĽr GrĂĽne LED1 in RGB-LED
 int redPin1 = 42; //Digital Pin fĂĽr Rote LED1 in RGB-LEDint redIn1 = 0; 
 int greenIn1 = 1;
 int blueIn1 = 2;int redVal1; 
 int greenVal1;
 int blueVal1;int bluePin2 = 4; //Digital Pin fĂĽr Blaue LED2 in RGB-LED 
 int greenPin2 = 5; //Digital Pin fĂĽr GrĂĽne LED2 in RGB-LED
 int redPin2 = 6; //Digital Pin fĂĽr Rote LED2 in RGB-LEDint redIn2 = 3; 
 int greenIn2 = 4;
 int blueIn2 = 5;int redVal2; 
 int greenVal2;
 int blueVal2;//Relays 
 int relPin1 = 2; //Digital Pin fĂĽr Relay1
 int relPin2 = 3; //Digital Pin fĂĽr Relay2
 int relPin3 = 8; //Digital Pin fĂĽr Relay3
 int relPin10 = 22; //Digital Pin fĂĽr Relay22
 int relPin11 = 24; //Digital Pin fĂĽr Relay24int relPin1In = 22; 
 int relPin2In = 1;
 int relPin3In = 5;
 int relPin10In = 23;
 int relPin11In = 25;int relPin1Val; 
 int relPin2Val;
 int relPin3Val;
 int relPin10Val;
 int relPin11Val;
 //Heater Status
 int heiz1Val;
 int heiz2Val;
 //#define WS5200_CS 10
 //#define SDCARD_CS 4
 #define BACKLIGHT_PIN 13
 #define ONE_WIRE_BUS 32
 LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
 OneWire oneWire(ONE_WIRE_BUS);
 DallasTemperature sensors(&oneWire);
 //Adresy CIDEL
 DeviceAddress C = { 0x28, 0xC0, 0x97, 0x8A, 0x06, 0x00, 0x00, 0x74 };
 DeviceAddress Cc = { 0x28, 0x3E, 0x11, 0x8A, 0x06, 0x00, 0x00, 0x42 };
 DeviceAddress Ccc = { 0x28, 0x73, 0x9B, 0x89, 0x06, 0x00, 0x00, 0x83 };
 //DeviceAddress C03 = { 0x28, 0x73, 0x9B, 0x89, 0x06, 0x00, 0x00, 0x83 };
 int backLight = 13; // pin 13 will control the backlight
 int LEDbrightness; //void setup() { 
 sensors.begin();
 Serial.begin(9600);Ethernet.begin(mac, ip, gateway, subnet); server.begin(); sensors.requestTemperatures(); 
 Serial.print(„server is at „);
 Serial.println(Ethernet.localIP());// Velikost slova (bit) 9 10 11 12 
 //Rozlišenà (°C) 0.5 0.25 0.125 0.0625
 //Doba převodu (ms) 93,75 187,5 375 750
 sensors.setResolution(C, 9);
 sensors.setResolution(Cc, 9);
 sensors.setResolution(Ccc, 9);
 //sensors.setResolution(C03, 9);
 lcd.begin(16, 4);
 lcd.clear(); // initialize the lcd
 lcd.backlight();//T03 = sensors.getTempC(C03); //teplota solaru 
 pinMode(relPin1, OUTPUT); //Output Mode for Relay1
 pinMode(relPin2, OUTPUT); //Output Mode for Relay2
 pinMode(relPin3, OUTPUT); //Output Mode for Relay3
 pinMode(relPin10, OUTPUT); //Output Mode for Relay2
 pinMode(relPin11, OUTPUT); //Output Mode for Relay3
 // digitalWrite(relPin1, HIGH);
 // digitalWrite(relPin2, HIGH);
 // digitalWrite(relPin3, HIGH);
 // digitalWrite(relPin10, HIGH);
 // digitalWrite(relPin11, HIGH);} void loop() { sensors.requestTemperatures(); 
 T00 = sensors.getTempC(C); //teplota bazenu
 T01 = sensors.getTempC(Cc); //teplota panelu
 T02 = sensors.getTempC(Ccc); //teplota solaru
 //T03 = sensors.getTempC(C03); //teplota solarulcd.setCursor(0, 0); 
 lcd.print(„Bazen: „);
 lcd.print(T00); //teplota venku
 lcd.print(„C“);
 lcd.setCursor(0, 2);
 lcd.print(„Ohrev: „);
 lcd.print(T01); //teplota solaru
 lcd.print(„C“);
 // Serial.println();
 // Serial.print(„T0 „);
 // Serial.print(T00);
 // Serial.println();
 // Serial.print(„T1 „);
 // Serial.print(T01);
 // Serial.println();
 // Serial.print(„T2 „);
 // Serial.print(T02);//Je nach Temperatur Farbe der RGB-LED anpassen und Rel 1 schalten 
 if(T01 <= 27)
 {
 redVal1 = 0;
 greenVal1 = 0;
 blueVal1 = 150;
 relPin1Val = LOW;
 relPin3Val = LOW;
 lcd.setCursor(0, 1);
 lcd.print(„Topeni: Zap „);
 }
 else if(T01 > 27 && T01 < 29)
 {
 redVal1 = 0;
 greenVal1 = 150;
 blueVal1 = 0;
 relPin1Val = HIGH;
 relPin3Val = LOW;
 lcd.setCursor(0, 1);
 lcd.print(„Topeni: Vyp „);
 }
 else if(T01 > 29)
 {
 redVal1 = 150;
 greenVal1 = 0;
 blueVal1 = 0;
 relPin1Val = HIGH;
 relPin3Val = HIGH;
 lcd.setCursor(0, 1);
 lcd.print(„VÄ›tránĂ: Vyp „);
 }//Je nach Temperatur Farbe der RGB-LED anpassen und Rel 2 schalten 
 if(T02 <= 27)
 {
 redVal2 = 0;
 greenVal2 = 0;
 blueVal2 = 255;
 relPin2Val = LOW;
 lcd.setCursor(0, 3);
 lcd.print(„Topeni: Zap „);
 }
 else if(T02 > 27 && T02 < 29)
 {
 redVal2 = 0;
 greenVal2 = 255;
 blueVal2 = 0;
 relPin2Val = HIGH;
 lcd.setCursor(0, 3);
 lcd.print(„Topeni: Vyp „);
 }
 else if(T02 > 29)
 {
 redVal2 = 255;
 greenVal2 = 0;
 blueVal2 = 0;
 relPin2Val = HIGH;
 lcd.setCursor(0, 3);
 lcd.print(„Topeni: Vyp „);
 }
 {analogWrite(redPin1, redVal1); 
 analogWrite(greenPin1, greenVal1);
 analogWrite(bluePin1, blueVal1);
 analogWrite(redPin2, redVal2);
 analogWrite(greenPin2, greenVal2);
 analogWrite(bluePin2, blueVal2);
 digitalWrite(relPin1, relPin1Val);
 digitalWrite(relPin2, relPin2Val);
 digitalWrite(relPin3, relPin3Val);
 digitalWrite(relPin10, relPin10Val);
 digitalWrite(relPin11, relPin11Val);} Serial.println(); 
 Serial.print(„Locating devices…“);
 Serial.print(„Found „);
 Serial.print(sensors.getDeviceCount(), DEC);
 Serial.println(“ devices.“);
 //Serial.print(„Free Memory = „);
 //Serial.println(getFreeMemory());
 // kdyĹľ je pĹ™ipojen klient, zjistĂme, zda jsou odeslána data
 // od klienta směrem k nám
 EthernetClient client = server.available();
 String buffer = „“;// dokud je klient pĹ™ipojen 
 while (client.connected()) {
 // ÄŤti data od nÄ›j dokud nenarazĂš na znak novĂ©ho řádkuif (client.available()) { 
 char c = client.read();
 buffer = buffer + c;
 if (c == ‚\n‘) {if(buffer.indexOf(„rele1=1“)>=0) 
 digitalWrite(2,HIGH);else if(buffer.indexOf(„rele1=0“)>=0) 
 digitalWrite(2,LOW);if (buffer.indexOf(„rele2=1“) >= 0) 
 digitalWrite(3, HIGH);
 else if (buffer.indexOf(„rele2=0“) >= 0)
 digitalWrite(3, LOW);if (buffer.indexOf(„rele10=1“) >= 0) 
 digitalWrite(22, HIGH);else if (buffer.indexOf(„rele10=0“) >= 0) 
 digitalWrite(22, LOW);if (buffer.indexOf(„rele11=1“) >= 0) 
 digitalWrite(24, HIGH);else if (buffer.indexOf(„rele11=0“) >= 0) 
 digitalWrite(24, LOW);// delay(1); 
 // odešle klasickou hlavičku HTML stránky
 client.println F ((„HTTP/1.1 200 OK“));
 client.println F ((„Content-Type: text/html“));
 client.println F ((„Connection: close“));client.println (); 
 client.println F ((„<!DOCTYPE HTML>“));// zde jiĹľ klasická html data 
 client.println F ((„<html>“));
 client.println F ((„<head>“));
 // Název stránky
 client.println F ((„<title>Arduinio Server – Rele control</title>“));
 client.println F ((„</head>“));
 client.println F ((„<body>“));
 client.print F ((„<h3 align=center>Program pro ovladani rele</h3>“));
 client.println F ((„</br>“));// vygeneruje formulář if (digitalRead(2)) { 
 client.print F ((„<button style=’background:red;width:20%;height:30px‘>RELE 1 VYPNUTO</button>“));
 } else {
 client.print F ((„<button style=’background:green;width:20%;height:30px‘>RELE 1</button>“));
 }
 client.println F ( (“ test“));
 client.println F ((„</br>“));if (digitalRead(3)) { 
 client.print F ((„<button style=’background:red;width:20%;height:30px‘>RELE 2 VYPNUTO</button>“));
 } else {
 client.print F ((„<button style=’background:green;width:20%;height:30px‘>RELE 2</button>“));
 }
 client.println F ((“ svetlo“));
 client.println F ((„</br>“));if (digitalRead(22)) { 
 client.print F ((„<button style=’background:red;width:20%;height:30px‘>RELE 3 VYPNUTO</button>“));
 } else {
 client.print F ((„<button style=’background:green;width:20%;height:30px‘>RELE 3</button>“));client.println F ((“ filtrace“)); 
 client.println F ((„</br>“));if (digitalRead(24)) { 
 client.print F ((„<button style=’background:red;width:20%;height:30px‘>RELE 4 VYPNUTO</button>“));
 } else {
 client.print F ((„<button style=’background:green;width:20%;height:30px‘>RELE 4</button>“));
 }
 client.println F ((“ tlacitko pro kotel 4″));client.println F ((„</br>“)); 
 client.println F ((„</br>“));
 client.println („</br>“);client.println („Teplota0“); client.println (T00); 
 client.println („</br>“);
 client.println („Teplota1:“);client.println (T01); 
 client.println („</br>“);
 client.println („Teplota2:“);client.println (T02); 
 client.println („</br>“);client.print („<meta http-equiv=\“refresh\“ content=\“5\“>“); //stránka se naÄŤte automaticky jednou za 3 s 
 client.println („</body>“);
 client.println („</html>“);Serial.println(buffer); delay(1); //dáme klientovi čas na zpracování 
 //ukončà přenos
 client.stop();
 } }
 }
 } }[/code] jaracim ÚčastníkProblém je vyřešen, dík. Zbyšek Voda ÚčastníkPokud jsem kód dobře pochopil, přijde mi, že sice máte zobrazená tlačítka, ale nemáte k nim obslužný kód. 
 Předpokládám, že chcete, aby po kliknutí na tlačítko program odeslal požadavek s informacemi o stavu relé.Dalo by se to udělat třeba tak, že z tlačítek uděláte odkazy vedoucí na určitou URL s přidanými parametry za url. Jak přidat URL ke tlačítku řeší třeba zde. Arduino pak bude zpracovávat HTTP požadavek, ze kterého si vybere požadované informace z parametru. jurda23 Účastníkno momentalně vše zkouším metodou pokus-omyl potřebuji aby to fungovalo jako termostat na třech zavislostech,spinalo dvě rele, vše nastavitelné přes web 
 1.pokud je čas který nasavím (cca 9:00-17:00hod) bude seple rele1
 2.teplota čidla1 dle nasavení ovlada rele2 za podmínky že teplota čidla2 neni menší než ktera bude nastavena
 3.I2C displejna kterem budou rotovat dokola teploty z cca 6čidel a stavy relatek topení,oběh
 Jedná se mi o to vytvořit automatiku která bude hlídat ohřev bazenu přes tep.vyměník ze zasobníku tepelného čerpadla ve kterem nesmí poklesnout teplota pod cca 40stupnu jinak se spustí příhřev topnou spirálou cca9KW čemuž chci zabránit,muj sen je aby to časem vypadalo stejně jako zde https://www.youtube.com/watch?v=ef9fpolMtxAjsem na začátku a potýkám se s tím že se nerozjede webserver ping na adresu jde,když už se rozjede občas tak mi nefunguji stavy rele a ovladaní. a netuším jak udělat podmínku na bod 1a2,modul realneho času je na cestě a nevímjak sinchronizovat čas přes NTP vše chci něák velmi jednoduše. Ještě tvořím jeden system,naplatformě cubieboard ten již funguje na adrese teblomer.juricekpavel.net:81 
 na arduinu jsem nováček tak se snažím lepit kod z toho co najdu na netu.jurda23 Účastníkno momentalně vše zkouším metodou pokus-omyl potřebuji aby to fungovalo jako termostat na třech zavislostech,spinalo dvě rele, vše nastavitelné přes web 
 1.pokud je čas který nasavím (cca 9:00-17:00hod) bude seple rele1
 2.teplota čidla1 dle nasavení ovlada rele2 za podmínky že teplota čidla2 neni menší než ktera bude nastavena
 3.I2C displejna kterem budou rotovat dokola teploty z cca 6čidel a stavy relatek topení,oběh
 Jedná se mi o to vytvořit automatiku která bude hlídat ohřev bazenu přes tep.vyměník ze zasobníku tepelného čerpadla ve kterem nesmí poklesnout teplota pod cca 40stupnu jinak se spustí příhřev topnou spirálou cca9KW čemuž chci zabránit,muj sen je aby to časem vypadalo stejně jako zde https://www.youtube.com/watch?v=ef9fpolMtxAjsem na začátku a potýkám se s tím že se nerozjede webserver ping na adresu jde,když už se rozjede občas tak mi nefunguji stavy rele a ovladaní. a netuším jak udělat podmínku na bod 1a2,modul realneho času je na cestě a nevímjak sinchronizovat čas přes NTP vše chci něák velmi jednoduše. Ještě tvořím jeden system,naplatformě cubieboard ten již funguje na adrese teblomer.juricekpavel.net:81 
 na arduinu jsem nováček tak se snažím lepit kod z toho co najdu na netu.Zbyšek Voda ÚčastníkDobrý den, můžete prosím popsat, co konkrétně vám nefunguje? Taky by se hodil popis projektu – co to má dělat, jak to funguje… Zbyšek Voda ÚčastníkV Arduino IDE v nabídce Tools v Ports vyberte COM5 daflik Účastníkuž to jede. Musel jsem dát „jako správce“. Ale další problém je že mi neuplouduje. myslím že problém je v tom že deska má COM5 a program vysílá na COM1. Jak to sjednotit? diky. 
 Jinak mašinka je to super.:)jurda23 ÚčastníkNašel by se někdo hodný kdo mi pomuže? 
- 
		AutorPříspěvky
