Databáze DuckDB (Wikipedie) dospěla po 6 letech do verze 1.0.0.
Intel na veletrhu Computex 2024 představil (YouTube) mimo jiné procesory Lunar Lake a Xeon 6.
Na blogu Raspberry Pi byl představen Raspberry Pi AI Kit určený vlastníkům Raspberry Pi 5, kteří na něm chtějí experimentovat se světem neuronových sítí, umělé inteligence a strojového učení. Jedná se o spolupráci se společností Hailo. Cena AI Kitu je 70 dolarů.
Byla vydána nová verze 14.1 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
Společnost Kaspersky vydala svůj bezplatný Virus Removal Tool (KVRT) také pro Linux.
Grafický editor dokumentů LyX, založený na TeXu, byl vydán ve verzi 2.4.0 shrnující změny za šest let vývoje. Novinky zahrnují podporu Unicode jako výchozí, export do ePub či DocBook 5 a velké množství vylepšení uživatelského rozhraní a prvků editoru samotného (např. rovnic, tabulek, citací).
Byla vydána (𝕏) nová verze 7.0 LTS open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.
Organizace Apache Software Foundation (ASF) vydala verzi 22 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Společnost AMD na veletrhu Computex 2024 představila (YouTube) mimo jiné nové série procesorů pro desktopy AMD Ryzen 9000 a notebooky AMD Ryzen AI 300.
OpenCV (Open Source Computer Vision, Wikipedie), tj. open source multiplatformní knihovna pro zpracování obrazu a počítačové vidění, byla vydána ve verzi 4.10.0 . Přehled novinek v ChangeLogu. Vypíchnout lze Wayland backend pro 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: