Apple oznámil, že iPhone a iPad jako první a jediná zařízení pro koncové uživatele splňují požadavky členských států NATO na zabezpečení informací. Díky tomu je možné je používat pro práci s utajovanými informacemi až do stupně „NATO Restricted“, a to bez nutnosti instalovat speciální software nebo měnit nastavení. Žádné jiné běžně dostupné mobilní zařízení tak vysokou úroveň státní certifikace dosud nezískalo.
Americký provozovatel streamovací platformy Netflix odmítl zvýšit nabídku na převzetí filmových studií a streamovací divize konglomerátu Warner Bros. Discovery (WBD). Netflix to ve čtvrtek oznámil v tiskové zprávě. Jeho krok po několikaměsíčním boji o převzetí otevírá dveře k akvizici WBD mediální skupině Paramount Skydance, a to zhruba za 111 miliard dolarů (2,28 bilionu Kč).
Americká společnosti Apple přesune část výroby svého malého stolního počítače Mac mini z Asie do Spojených států. Výroba v závodě v Houstonu by měla začít ještě v letošním roce, uvedla firma na svém webu. Apple také plánuje rozšířit svůj závod v Houstonu o nové školicí centrum pro pokročilou výrobu. V Houstonu by měly vzniknout tisíce nových pracovních míst.
Vědci Biotechnologické společnosti Cortical Labs vytvořili biopočítač nazvaný CL1, který využívá živé lidské mozkové buňky vypěstované z kmenových buněk na čipu. Po úspěchu se hrou PONG se ho nyní snaží naučit hrát DOOM. Neurony přijímají signály podle toho, co se ve hře děje, a jejich reakce jsou převáděny na akce jako pohyb nebo střelba. V tuto chvíli systém hraje velmi špatně, ale dokáže reagovat, trochu se učit a v reálném čase se hrou
… více »Pro testování byl vydán 4. snapshot Ubuntu 26.04 LTS (Resolute Raccoon).
Ben Sturmfels oznámil vydání MediaGoblinu 0.15.0. Přehled novinek v poznámkách k vydání. MediaGoblin (Wikipedie) je svobodná multimediální publikační platforma a decentralizovaná alternativa ke službám jako Flickr, YouTube, SoundCloud atd. Ukázka například na LibrePlanet.
TerminalPhone (png) je skript v Bashi pro push-to-talk hlasovou a textovou komunikaci přes Tor využívající .onion adresy.
Před dvěma lety zavedli operátoři ochranu proti podvrženým hovorům, kdy volající falšuje čísla anebo se vydává za někoho jiného. Nyní v roce 2026 blokují operátoři díky nasazeným technologiím v průměru 3 miliony pokusů o podvodný hovor měsíčně (tzn., že k propojení na zákazníka vůbec nedojde). Ochrana před tzv. spoofingem je pro zákazníky a zákaznice všech tří operátorů zdarma, ať už jde o mobilní čísla nebo pevné linky.
Společnost Meta (Facebook) předává React, React Native a související projekty jako JSX nadaci React Foundation patřící pod Linux Foundation. Zakládajícími členy React Foundation jsou Amazon, Callstack, Expo, Huawei, Meta, Microsoft, Software Mansion a Vercel.
Samsung na akci Galaxy Unpacked February 2026 (YouTube) představil své nové telefony Galaxy S26, S26+ a S26 Ultra a sluchátka Galaxy Buds4 a Buds4 Pro. Telefon Galaxy S26 Ultra má nový typ displeje (Privacy Display) chránící obsah na obrazovce před zvědavými pohledy (YouTube).
// 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
. Ta znaménka jsem v nedočkavosti neotočil a hodnoty jsem nastavil na:
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: