Nedávno představená služba Raspberry Pi Connect pro vzdálený přístup k Raspberry Pi z webového prohlížeče nově podporuje všechny Raspberry Pi a umožňuje povolit pouze vzdálený shell (Connect Lite). Detaily v dokumentaci.
Seznam dělá každé úterý odstávku svého datacentra a simuluje tak správnost jejich HA řešení. Dnes se ovšem něco pokazilo a má kompletní výpadek. Nejdou webové služby, mapy apod. Kdo by rád věděl něco více o tom, na čem Seznam běží, tak nelze nepřipomenout LinuxDays 2023: Podvozek Seznamu - od cloudu až po Datacentrum (Michal Toužín, Miroslav Bezdička).
Na stránkách konference Den IPv6 2024, jež proběhla 6. června v Praze, byly zveřejněny prezentace a videozáznamy.
Kyberkriminální skupina LockBit se prý nabourala do Federálního rezervního systému (FED) [Security Affairs].
Zakladatel WikiLeaks Julian Assange je na svobodě (𝕏, 𝕏).
V neděli 30. června skončí (EOL) podpora CentOS Linux 7.
David Tschumperlé a Garry Osgood v obšírném článku se spoustou náhledů shrnují vývoj multiplatformního svobodného frameworku pro zpracování obrazu G'MIC (GREYC's Magic for Image Computing, Wikipedie) za poslední rok.
Andrew S. Tanenbaum byl oceněn 2023 ACM Software System Award (Wikipedie) za operační systém MINIX.
Celkový počet stažení aplikací z Flathubu překročil 2 miliardy. Aktuální Statistiky Flathubu: Celkový počet stažení 2 002 793 783. Celkem desktopových aplikací 2 636.
Byla vydána nová verze 4.8.0 programu na úpravu digitálních fotografií darktable (Wikipedie).
// 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: