Byl vydán Debian 12.10, tj. desátá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
Byla vydána nová verze 4.5 svobodného notačního programu MuseScore (Wikipedie). Představení novinek v oznámení v diskusním fóru a také na YouTube.
Byla vydána nová verze 8.6.0 správce sbírky fotografií digiKam (Wikipedie). Přehled novinek i s náhledy v oficiálním oznámení (NEWS). Nejnovější digiKam je ke stažení také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.
O víkendu probíhá v Praze na Karlově náměstí 13 konference Installfest 2025. Na programu je celá řada zajímavých přednášek a workshopů. Vstup je zdarma. Přednášky lze sledovat i online na YouTube.
Byla vydána nová verze 2.49.0 distribuovaného systému správy verzí Git. Přispělo 89 vývojářů, z toho 24 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.
Premiér Petr Fiala (ODS) dnes na síti X vyloučil, že by za jeho vlády mohla začít platit vyhláška, podle níž by poskytovatelé internetového připojení měli uchovávat adresy internetových stránek, na které se lidé připojují.
Flock 2025, tj. konference pro přispěvatele a příznivce Fedory, proběhne od 5. do 8. června v Praze.
Zemřel Mark Klein, který dlouhá léta pracoval pro telekomunikační firmu AT&T a proslavil se jako whistleblower, když zveřejnil informace o spolupráci AT&T s agenturou NSA. Cílem spolupráce bylo sledovat veškerou komunikaci občanů za pomocí zařízeních v místnosti 641A. O spolupráci obou subjektů napsal knihu Wiring Up The Big Brother Machine...And Fighting It.
Byla vydána nová verze 16 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v changelogu.
Texas Instruments představil nejmenší mikrokontrolér na světě MSPM0C1104. Je o 38 % menší než současné nejmenší mikrokontroléry. Má pouze 1,38 mm².
// 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: