Byla vydána nová verze 1.12.0 dynamického programovacího jazyka Julia (Wikipedie) určeného zejména pro vědecké výpočty. Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Aktualizována byla také dokumentace.
V Redisu byla nalezena a v upstreamu již opravena kritická zranitelnost CVE-2025-49844 s CVSS 10.0 (RCE, vzdálené spouštění kódu).
Ministr a vicepremiér pro digitalizaci Marian Jurečka dnes oznámil, že přijme rezignaci ředitele Digitální a informační agentury Martina Mesršmída, a to k 23. říjnu 2025. Mesršmíd nabídl svou funkci během minulého víkendu, kdy se DIA potýkala s problémy eDokladů, které některým občanům znepříjemnily využití možnosti prokázat se digitální občankou u volebních komisí při volbách do Poslanecké sněmovny.
Společnost Meta představila OpenZL. Jedná se o open source framework pro kompresi dat s ohledem na jejich formát. Zdrojové kódy jsou k dispozici na GitHubu.
Google postupně zpřístupňuje českým uživatelům Režim AI (AI Mode), tj. nový režim vyhledávání založený na umělé inteligenci. Režim AI nabízí pokročilé uvažování, multimodalitu a možnost prozkoumat jakékoliv téma do hloubky pomocí dodatečných dotazů a užitečných odkazů na weby.
Programovací jazyk Python byl vydán v nové major verzi 3.14.0. Podrobný přehled novinek v aktualizované dokumentaci.
Bylo oznámeno, že Qualcomm kupuje Arduino. Současně byla představena nová deska Arduino UNO Q se dvěma čipy: MPU Qualcomm Dragonwing QRB2210, na kterém může běžet Linux, a MCU STM32U585 a vývojové prostředí Arduino App Lab.
Multiplatformní open source voxelový herní engine Luanti byl vydán ve verzi 5.14.0. Podrobný přehled novinek v changelogu. Původně se jedná o Minecraftem inspirovaný Minetest v říjnu loňského roku přejmenovaný na Luanti.
Byla vydána nová stabilní verze 6.10 (YouTube) multiplatformního frameworku a GUI toolkitu Qt. Podrobný přehled novinek v poznámkách k vydání.
// Include the library code: #include <*iquidCrystal.h> #include <*neWire.h> #include <*allasTemperature.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(13, 12, 11, 10, 9, 8); // Data wire is plugged into port 2 on the Arduino #define ONE_WIRE_BUS 2 // #define TEMPERATURE_PRECISION 9 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); // set value byte data[9]; byte termometr[8] = {B00100, B01010, B01010, B01110, B01110, B11111, B11111, B01110}; byte maximmetr[8] = {B00000, B00000, B00100, B01010, B00000, B01010, B00100, B00000}; void setup() { // set up the LCD's number of columns and rows: lcd.createChar(0, termometr); lcd.createChar(1, maximmetr); lcd.begin(16, 2); // Print a message to the LCD. lcd.write(byte(0)); lcd.setCursor(0, 1); lcd.write(byte(1)); // Start up the library sensors.begin(); } void loop() { sensors.requestTemperatures(); // první čidlo DS18S20 lcd.setCursor(1, 0); if (sensors.getTempCByIndex(0) > 100) { lcd.setCursor(0, 0); } if ((data[1] >> 7) == 1) { //zobrazení záporných hodnot data[0] = ~data[0]; lcd.print("-"); } else { lcd.print(" "); } if (sensors.getTempCByIndex(0) < 10) { // posun o jedno desetinné místo lcd.setCursor(3, 0); lcd.setCursor(2, 0); lcd.print(" "); } lcd.print(sensors.getTempCByIndex(0)); lcd.setCursor(6, 0); lcd.print((char)223); lcd.print("C"); // druhé čidlo DS18S20 lcd.setCursor(9, 0); if (sensors.getTempCByIndex(1) > 100) { lcd.setCursor(8, 0); } if ((data[1] >> 7) == 1) { //zobrazení záporných hodnot data[0] = ~data[0]; lcd.print("-"); } else { lcd.print(" "); } if (sensors.getTempCByIndex(1) < 10) { // posun o jedno desetinné místo lcd.setCursor(11, 0); lcd.setCursor(10, 0); lcd.print(" "); } lcd.print(sensors.getTempCByIndex(1)); lcd.setCursor(14, 0); lcd.print((char)223); lcd.print("C"); }
Řešení dotazu:
// Nastavení proměnných pro minimální teploty float LowTempMin; float LowTemp1; float LowTemp2; // Min teplota pro první sensor DS18S20 if (sensorOne < LowTemp1) { LowTemp1 = sensorOne; } // Min teplota pro druhé sensor DS18S20 if (sensorTwo < LowTemp2) { LowTemp2 = sensorTwo; } // Min teplota pro oba sensory DS18S20 if (LowTemp1 < LowTempMin) { LowTemp1 = LowTempMin; } else { LowTempMin = LowTemp2; }Když obdobný kód použiji pouze pro jedno čidlo, tak to funguje náramně. Trošinku to jaksi nechápu, proč pro jedno ano a pro dvě už ne.
// Min teplota pro oba sensory DS18S20 if (LowTemp1 < LowTemp2) { LowTempMin = LowTemp1; } else { LowTempMin = LowTemp2; }
#include <*iquidCrystal.h> #include <*neWire.h> #include <*allasTemperature.h> LiquidCrystal lcd(13, 12, 11, 10, 9, 8); #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); byte data[9]; byte termometr[8] = {B00100, B01010, B01010, B01110, B01110, B11111, B11111, B01110}; byte maximmetr[8] = {B00000, B00000, B00100, B01010, B00000, B01010, B00100, B00000}; void setup() { lcd.begin(16, 2); lcd.createChar(0, termometr); lcd.createChar(1, maximmetr); lcd.write(byte(0)); lcd.setCursor(0, 1); lcd.write(byte(1)); sensors.begin(); } void loop() { sensors.requestTemperatures(); float sensorOne = sensors.getTempCByIndex(0); lcd.setCursor(1, 0); // udržet jedno desetinné místo if (sensorOne > 100) { lcd.setCursor(0, 0); } else if (sensorOne < 100) { lcd.home(); lcd.write(byte(0)); // obnovit symbol teploty } if ((data[1] >> 7) == 1) { // zobrazení znaménka mínus data[0] = ~data[0]; lcd.print("-"); } else { lcd.print(" "); // nezobrazení znaménka plus } if (sensorOne < 10) { // udržet jedno desetinné místo lcd.setCursor(2, 0); lcd.print(" "); // nezobrazení znaménka plus } if (sensorOne < 0) { // udržet jedno desetinné místo lcd.setCursor(1, 0); lcd.print(" "); // smazat předchozí znaménko mínus } if (sensorOne <= -10) { // udržet jedno desetinné místo lcd.setCursor(1, 0); } lcd.print(sensorOne); lcd.setCursor(6, 0); lcd.print((char)223); lcd.print("C"); // second sensor DS18S20 float sensorTwo = sensors.getTempCByIndex(1); lcd.setCursor(9, 0); // udržet jedno desetinné místo if (sensorTwo > 100) { lcd.setCursor(8, 0); } if ((data[1] >> 7) == 1) { // zobrazení znaménka mínus data[0] = ~data[0]; lcd.print("-"); } else { lcd.print(" "); // nezobrazení znaménka plus } if (sensorTwo < 10) { // udržet jedno desetinné místo lcd.setCursor(10, 0); lcd.print(" "); // nezobrazení znaménka plus } if (sensorTwo < 0) { // udržet jedno desetinné místo lcd.setCursor(10, 0); lcd.print(" "); // smazat předchozí znaménko mínus lcd.setCursor(9, 0); lcd.print(" "); // smazat předchozí znaménko mínus } if (sensorTwo <= -10) { // udržet jedno desetinné místo lcd.setCursor(9, 0); } lcd.print(sensorTwo); lcd.setCursor(14, 0); lcd.print((char)223); lcd.print("C"); // Nastavení proměnných pro min a max teploty float LowTempMin; float LowTemp1; float LowTemp2; // Min teplota pro první sensor DS18S20 if (sensorOne < LowTemp1) { LowTemp1 = sensorOne; } // Min teplota pro druhé sensor DS18S20 if (sensorTwo < LowTemp2) { LowTemp2 = sensorTwo; } // Min teplota pro oba sensory DS18S20 if (LowTemp1 < LowTemp2) { LowTempMin = LowTemp1; } else { LowTempMin = LowTemp2; } // Max teplota pro oba sensory DS18S20... lcd.setCursor(2, 1); lcd.print(LowTempMin); lcd.setCursor(6, 1); lcd.print((char)223); lcd.print("C"); lcd.setCursor(10, 1); lcd.print(LowTemp2); lcd.setCursor(14, 1); lcd.print((char)223); lcd.print("C"); }
float LowTempMin; float LowTemp1; float LowTemp2;musí být mimo loop(), a v setup() bych jim přiřadil nějaké vysoké číslo, jinak mají výchozí tu nulu.
#include <*iquidCrystal.h> #include <*neWire.h> #include <*allasTemperature.h> LiquidCrystal lcd(13, 12, 11, 10, 9, 8); #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); byte data[9]; byte termometr[8] = {B00100, B01010, B01010, B01110, B01110, B11111, B11111, B01110}; byte maximmetr[8] = {B00000, B00000, B00100, B01010, B00000, B01010, B00100, B00000}; float LowTemp1 = 127; float LowTemp2 = 127; float LowTempMin = 127; float HighTemp1 = 127; float HighTemp2 = 127; float HighTempMax = 127; void setup() { lcd.begin(16, 2); lcd.createChar(0, termometr); lcd.createChar(1, maximmetr); lcd.write(byte(0)); lcd.setCursor(0, 1); lcd.write(byte(1)); sensors.begin(); } void loop() { sensors.requestTemperatures(); float sensorOne = sensors.getTempCByIndex(0); lcd.setCursor(1, 0); // udržet jedno desetinné místo if (sensorOne > 100) { lcd.setCursor(0, 0); } else if (sensorOne < 100) { lcd.home(); lcd.write(byte(0)); // obnovit symbol teploty } if ((data[1] >> 7) == 1) { // zobrazení znaménka mínus data[0] = ~data[0]; lcd.print("-"); } else { lcd.print(" "); // nezobrazení znaménka plus } if (sensorOne < 10) { // udržet jedno desetinné místo lcd.setCursor(2, 0); lcd.print(" "); // nezobrazení znaménka plus } if (sensorOne < 0) { // udržet jedno desetinné místo lcd.setCursor(1, 0); lcd.print(" "); // smazat předchozí znaménko mínus } if (sensorOne <= -10) { // udržet jedno desetinné místo lcd.setCursor(1, 0); } lcd.print(sensorOne); lcd.setCursor(6, 0); lcd.print((char)223); lcd.print("C"); // second sensor DS18S20 float sensorTwo = sensors.getTempCByIndex(1); lcd.setCursor(9, 0); // udržet jedno desetinné místo if (sensorTwo > 100) { lcd.setCursor(8, 0); } if ((data[1] >> 7) == 1) { // zobrazení znaménka mínus data[0] = ~data[0]; lcd.print("-"); } else { lcd.print(" "); // nezobrazení znaménka plus } if (sensorTwo < 10) { // udržet jedno desetinné místo lcd.setCursor(10, 0); lcd.print(" "); // nezobrazení znaménka plus } if (sensorTwo < 0) { // udržet jedno desetinné místo lcd.setCursor(10, 0); lcd.print(" "); // smazat předchozí znaménko mínus lcd.setCursor(9, 0); lcd.print(" "); // smazat předchozí znaménko mínus } if (sensorTwo <= -10) { // udržet jedno desetinné místo lcd.setCursor(9, 0); } lcd.print(sensorTwo); lcd.setCursor(14, 0); lcd.print((char)223); lcd.print("C"); // Nastavení proměnných pro min a max teploty // Min teplota pro první sensor DS18S20 if (sensorOne < LowTemp1) { LowTemp1 = sensorOne; } // Min teplota pro druhý sensor DS18S20 if (sensorTwo < LowTemp2) { LowTemp2 = sensorTwo; } // Min teplota pro oba sensory DS18S20 if (LowTemp1 < LowTemp2) { LowTempMin = LowTemp1; } else { LowTempMin = LowTemp2; } // Max teplota pro první sensor DS18S20 if (sensorOne < HighTemp1) { HighTemp1 = sensorOne; } // Max teplota pro druhý sensor DS18S20 if (sensorTwo < HighTemp2) { HighTemp2 = sensorTwo; } // Max teplota pro oba sensory DS18S20 if (HighTemp1 < HighTemp2) { HighTempMax = HighTemp1; } else { HighTempMax = HighTemp2; } lcd.setCursor(2, 1); lcd.print(LowTempMin); lcd.setCursor(6, 1); lcd.print((char)223); lcd.print("C"); lcd.setCursor(10, 1); lcd.print(HighTempMax); lcd.setCursor(14, 1); lcd.print((char)223); lcd.print("C"); }
// Max teplota pro první sensor DS18S20 //CHYBNÝ TEST: je teplota senzoru jedna menší než aktuální nejvyšší teplota if (sensorOne < HighTemp1) { //ano, pak ulož do nejvyšší hodnoty aktuální HighTemp1 = sensorOne; } // Max teplota pro druhý sensor DS18S20 if (sensorTwo < HighTemp2) { HighTemp2 = sensorTwo; }jak vidíš nemůže to fungovat, musíš tam obrátit znamínko rovnosti na sensorOne > HighTemp1
float LowTemp1 = 127; float LowTemp2 = 127; float LowTempMin = 127; float HighTemp1 = -55; float HighTemp2 = -55; float HighTempMax = -55;a hůž to krásně funguje. Mockrát díky. Jenom jestli mohu poprosit abych tomu více porozumněl. Proč nemohou být proměnné bez počáteční hodnoty popř. jen nuly? Vím, že to nefunguje, ale nějak si to neumím zdůvodnit. V každém případě mám radost a děkuji všem za pomoc.
Tiskni
Sdílej: