OpenSearch (Wikipedie) byl vydán ve verzi 3.0. Podrobnosti v poznámkách k vydání. Jedná se o fork projektů Elasticsearch a Kibana.
PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.
Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.
Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.
Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.
Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).
Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.
Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.
Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.
// 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: