Hirdetés
-
Robotkart irányított a majom a kínai Neuralink agyi chipjével
it A mindezt lehetővé tévő Neucybert a Neuralink kínai riválisa, a Beijing Xinzhida Neurotechnology fejlesztette ki.
-
Rövid előzetesen a S.T.A.L.K.E.R. 2: Heart of Chornobyl
gp Továbbra is szeptemberi premierrel számolnak a fejlesztők, reméljük több halasztásra már nem kell számítanunk.
-
Lenovo Essential Wireless Combo
lo Lehet-e egy billentyűzet karcsú, elegáns és különleges? A Lenovo bebizonyította, hogy igen, de bosszantó is :)
-
Mobilarena
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
lanszelot
addikt
Hello,
Igen, feltöltöttem.
Csupasz board -ra, kábelek és nano nélkül.
És hiba nélkül rá is ment.
Már amennyire érték hozzá. Gondolom hogy rajta van, nem láttam mit kellene látnom. Nagyon gyorsan felment Mega -ra.
De vártam még 1 percet hátha csinál vmit. De nem, és hibát se írt mikor lehúztam.
Szerintem vagy hibás a nano.
Vagy a Mega nem tudja rárakni a bootloader -t.
Már nem veszek több Arduino-t. -
Tomika86
senior tag
Sziasztok!
Távolság számlálást, jelenleg ezt használom, hogy lehetne átalakítani, hogy ne legyenek kerekítések és esetleg ne legyen float számolás. Jelenleg működik így. (ESP32 miatt van interruptban az FPU bekapcsolás és regiszter mentés). A kód devkiten fut és négyszögjellel hajtom meg, soros monitoron figyelem,
float CalibrationValue_nextion = 6900.0;
float GearratioValue_nextion = 5.0;
Ez a kettő érték változik, felső egy kalibráló érték, ezzel lehet pontosítani, alsó az áttétel megadása.#define METER_RESET_BUTTON_PIN GPIO_NUM_39
#define SPEED_INTERRUPT_PIN GPIO_NUM_14
#define TRIP_COUNTER_RESET_METER 2000
#define SPEEDOMETER_RESET_TIME_MS 3000
void IRAM_ATTR Speed_ISR_Handler();
void SpeedAndTripCalculation(gpio_num_t meterresetinput, const uint32_t speedometerZeroTime, const uint16_t TripmeterResetInterval);
float CalibrationValue_nextion = 6900.0;
float GearratioValue_nextion = 5.0;
uint16_t Speedometer;
uint32_t TravelledMeters_tonextion, TripMeter_Km, OdoMeter_Km;
uint8_t TripMeter_100meterPlace;
volatile float Trip_meter, Odo_meter, Meter_calc;
float DistanceOfImpulse_mm;
float DistanceOfImpulse_m;
volatile uint32_t MillisSavingInSpeedinterrupt;
volatile uint32_t TimeInSpeedinterrupt;
volatile uint32_t PreviousMicrosInSpeedinterrupt;
uint32_t cp0_regs[18];
void setup() {
pinMode(SPEED_INTERRUPT_PIN, INPUT);
pinMode(METER_RESET_BUTTON_PIN, INPUT);
Serial.begin(115200);
attachInterrupt(SPEED_INTERRUPT_PIN, Speed_ISR_Handler, FALLING);
delay(500);
}
void loop() {
SpeedAndTripCalculation(METER_RESET_BUTTON_PIN, SPEEDOMETER_RESET_TIME_MS, TRIP_COUNTER_RESET_METER);
Serial.print("Sebesseg: ");
Serial.println(Speedometer);
Serial.print("Meter: ");
Serial.println(TravelledMeters_tonextion);
Serial.print("Trip szamolo: ");
Serial.println(TripMeter_Km);
Serial.print("Trip 100m szamolo: ");
Serial.println(TripMeter_100meterPlace);
Serial.print("\n");
}
void SpeedAndTripCalculation(gpio_num_t meterresetinput, const uint32_t speedometerZeroTime, const uint16_t TripmeterResetInterval) {
DistanceOfImpulse_mm = CalibrationValue_nextion / GearratioValue_nextion;
DistanceOfImpulse_m = DistanceOfImpulse_mm / 1000.0;
// Sebesség
if ((millis() - MillisSavingInSpeedinterrupt) < speedometerZeroTime) {
Speedometer = 3600 * DistanceOfImpulse_mm / (TimeInSpeedinterrupt);
}
else {
Speedometer = 0;
}
Speedometer = constrain(Speedometer, 0, 300);
// Megtett méter számláló
if (Meter_calc > 99999 || (digitalRead(meterresetinput))) {
Meter_calc = 0;
}
TravelledMeters_tonextion = round (Meter_calc);
// Napi számláló
if (Trip_meter > 999.9999) {
Trip_meter = 0;
TripMeter_Km++;
}
// Nullázás ha 9999km felett van, vagy a beállított felett, vagy nulláztunk gombbal
if ((TripMeter_Km > 9999) || (TripMeter_Km >= TripmeterResetInterval)) {
Trip_meter = 0;
TripMeter_Km = 0;
}
TripMeter_100meterPlace = ((uint32_t)Trip_meter / 100) - (((uint32_t)Trip_meter / 1000) * 10);
// Odo km
if (Odo_meter > 999.9999) {
Odo_meter = 0;
OdoMeter_Km++;
}
if (OdoMeter_Km > 9999999) {
Odo_meter = 0;
OdoMeter_Km = 0;
}
}
void IRAM_ATTR Speed_ISR_Handler() {
// get FPU state
uint32_t cp_state = xthal_get_cpenable();
if(cp_state) {
// Save FPU registers
xthal_save_cp0(cp0_regs);
} else {
// enable FPU
xthal_set_cpenable(1);
}
Odo_meter += DistanceOfImpulse_m;
Trip_meter += DistanceOfImpulse_m;
Meter_calc += DistanceOfImpulse_m;
TimeInSpeedinterrupt = (micros() - PreviousMicrosInSpeedinterrupt);
PreviousMicrosInSpeedinterrupt = micros();
MillisSavingInSpeedinterrupt = millis();
if(cp_state) {
// Restore FPU registers
xthal_restore_cp0(cp0_regs);
} else {
// turn it back off
xthal_set_cpenable(0);
}
}Bármi ötletet meghallgatok, ami jobbá teszi.
Köszönöm!
-
nagyúr
válasz lanszelot #19501 üzenetére
Na akkor sorban:
1 kiválasztottad a mega boardot
2 feltöltötted rá az Arduino ISP programot
3 kiválasztottad a nano boardot
4 beállítottad programozónak az "Arduino as ISP"-t
5 össze kötötted a megfelelő lábakat:
6 bekötötted a kondenzátort a reset lábraés ennek ellenére sem sikerült?
-
vargalex
félisten
válasz lanszelot #19504 üzenetére
Szia!
Esetleg, ha nem lenne bekapcsolva, akkor Arduino IDE-ban kapcsold be a Beállítások alatt a Bővebb kimenet mutatása eközben: feltöltés opciót (Preferences->Show verbose output during: upload).
Egyébként én még nem láttam bootloader nélküli nano-t. Csak olyat, amin még régi bootloader volt, ekkor az Arduino IDE-ben az Eszközök (Tools) menüben az Arduino Nano board kiválasztása után CPU-t is át kell állítani ATmega328P (Old Bootloader) típusra.Alex
-
Janos250
őstag
válasz Tomika86 #19502 üzenetére
Hú, ezt így nem tudom áttekinteni, ezért lehet, hogy badarságot kérdek, de akkor bocs.
ESP32-n van hardware bemenő impulzus számlálás. (Én még nem használtam, de van)
Esetleg azzal?Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
-
lanszelot
addikt
Rossz bootloader írást nézel. Ezért rossz képet nézel.
A te képed nem ICSP pin-en keresztül van.
Írtam hogy a normál a nano-al nem működik.
Error kód alapján megkerestem miért.
Linket is dobtam ahol leírják miért.
ICSP pin-en keresztül kell frissitenem, ezért a kép már az alapján készült.
De igen, a normált is próbáltam, fentebb ott az error kód.
#19487 -es írásom -
nagyúr
válasz lanszelot #19510 üzenetére
Tedd már meg, hogy csinálsz egy fotót az összedugott két lapról, ahogy utoljára próbálkoztál vele.
A mega boardon nem a 10-13 pineken van az SPI, mint az UNO-n meg a Nano-n, hanem az 50-53 pineken, ezeket kell összekötni a Nano 10-13 pinjeivel, vagy az ICSP headerrel, ami ugyanez a 4 láb csak máshol kivezetve.[ Szerkesztve ]
-
lanszelot
addikt
Újra össze dugtam, és mind a 2 módon megpróbáltam.
ICSP pin:
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]
Normál:
[kép]
[kép]
Próbáltam láthatóan fotózni. Remélem látszik.
A nano icsp pin-re szín alapján dugtam, mert nincs mega icsp-re dugv a képeken.
Színhelyesen dugtam fel. Csak a pozitív a fehér ennyi eltéréssel.[ Szerkesztve ]
-
nagyúr
válasz lanszelot #19514 üzenetére
Töltsd le az avrdudess-t. Felül ki tudod választani a portot és a programozót (Arduino as ISP), jobb felső sorban a Detect gombra nyomva fel kell neki ismerni a CPU-t akkor is, ha nincs rá feltöltve bootloader. Ha felismerte, akkor minden jól van összekötve. Töltsd le ezt a hex file-t, tallózd be a Flash sorban, nyomd meg alatta a Gombot
Ha minden jól megy, kész.[ Szerkesztve ]
-
lanszelot
addikt
Nincs olyan lehetőség, hogy Arduino as ISP.
Nem ismeri fel se Arduino, se Arduino Programmer ISP, se a másik
se Arduino Programmer ISP -n /2 van belőle/
Nem írtad hogy kell összekötni. #19512 ICSP alapján kötöttem összeLehúztam mindent nano-ról,
Nano-t usb kábellel bedugtam pc-be,
AVRDUDESS 2.14 portable elindítottam,
Programmer - Arduino válsztottam
Detect - Unable to detectvargalex: vásárlás leírásban ott volt, hogy nincs bootloader, csak nem tudtam az mit jelent
gondoltam, úgy is saját kódot akarok rárakni. -
lanszelot
addikt
Hello,
Kaptam egy Arduino Uno-t ahol dolgozom, az egyik tanártól.
Ez a leírás szeritn csináltam. Pont úgy.
Azzal is hibát dob:
Arduino: 1.8.18 (Windows 10), Board: "Arduino Nano, ATmega328P"
Error while burning bootloader.
avrdude: Expected signature for ATmega328P is 1E 95 0F
Double check chip, or use -F to override this check.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.Avrdudess:
You have the latest version :)
>>>: avrdude -c arduinoisp -p m8
WARNING: Unable to detect MCU
avrdude.exe: Error: Could not find USBtiny device (0x2341/0x49)
avrdude.exe: opening programmer "arduinoisp" on port "usb" failed
avrdude.exe done. Thank you.Bár még mindig nem tudom hogy kell használni.
#19517weiss: szerintem félre értetted, blink és hasonló programról írtam, nem bootloader-ről
Amúgy én vagyok a programozó. -
nagyúr
válasz lanszelot #19517 üzenetére
Hát... Akkor már csak két lehetőség van.
1 eleve rossz a lap, vagy hamis chip van rajta
2 véletlenül elkötötted a tápvezetékeket próbálkozás közben és kijött a füst, ami működteti a chipet
Esetleg keresni kellene egy régebbi verziójú avrdudess-t, hátha. Egy régebbi például ismeri a pickit2 programozót, de az újabbakból már kivették a támogatást, hátha az Arduino ISP is csak egy régebbi verzióban van. Én egyszer kaptam attiny85 helyett attiny12-t, de az avrdudess azt is felismerte, asszem pont egy UNO volt a programozó mert nem volt akkor még rendes ISP-m... De hogy semmi ne ismerje fel -
weiss
addikt
válasz lanszelot #19520 üzenetére
Én nem értek hozzá, de:
The ATMega328PB is a different microcontroller, and so you'd expect to see errors when trying to burn a bootloader to it as if it were an ATMega328P. The easiest way to get it working is to use Minicore, which has support for the 328PB.
I did nothing, the pavement was his enemy!
-
-
Wolfram
aktív tag
Ali-n véletlenül PSRAM nélküli ESP-t rendeltem, valaki tudja mire jó, vagy mire kell ez a ram? Dobhatom ki a kukába, vagy ez csak speciális alkalmazásokhoz kell?
-
lanszelot
addikt
Hello,
Végre működik a nano
Már programozgattam is kicsit
Így vissza térnék az eredeti kérdésemhez.
Itt van az ino file, amit le lehet tölteni.
De kellenek hozzá a Library file-ok.
Leszedtem /ráütésre/, majd töröltem az include -okat, és Skatch -> Include Library hozzá adtam , hogy tuti legyen az elérés.
Persze hibát dob. Gondolom nem azt szedtem le amit kellett volna."C:\Users\robag\OneDrive\Dokumentumok\Arduino\libraries\Adafruit_SH1106\Adafruit_SH1106.cpp: In member function 'void Adafruit_SH1106::display()':
C:\Users\robag\OneDrive\Dokumentumok\Arduino\libraries\Adafruit_SH1106\Adafruit_SH1106.cpp:551:28: error: 'TWBR' was not declared in this scope
uint8_t twbrbackup = TWBR;
^~~~
C:\Users\robag\OneDrive\Dokumentumok\Arduino\libraries\Adafruit_SH1106\Adafruit_SH1106.cpp:551:28: note: suggested alternative: 'TWBR0'
uint8_t twbrbackup = TWBR;
^~~~
TWBR0
Multiple libraries were found for "Wire.h"
Used: C:\Users\robag\AppData\Local\Arduino15\packages\ATmega328PB-incl-Bootloader\hardware\avr\0.1.0\libraries\Wire
Not used: C:\Users\robag\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire
Multiple libraries were found for "SPI.h"
Used: C:\Users\robag\AppData\Local\Arduino15\packages\ATmega328PB-incl-Bootloader\hardware\avr\0.1.0\libraries\SPI
Not used: C:\Users\robag\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\SPI
Multiple libraries were found for "Adafruit_Sensor.h"
Used: C:\Users\robag\OneDrive\Dokumentumok\Arduino\libraries\Adafruit_Sensor-1.1.7
Not used: C:\Users\robag\OneDrive\Dokumentumok\Arduino\libraries\Adafruit_Unified_Sensor
exit status 1
Error compiling for board ATmega328PB."Honnan tudom azokat a file-okat leszedni, hogy működjön?
Amivel épp baja van azt innen szedtem /első post alatt ott a zip file, kicsomagolva másoltam a Library-ba/
[ Szerkesztve ]
-
nagyúr
-
Undoroid
őstag
Szia Aryes!
Lehet, hogy ezt az egész folyamatot bele is lehetne szerkesztettni egy illetékessel az első hozzászólásba! A vezetékelésről képpel, szükséges linkekkel, stb... Szerintem sokaknak (Nekem is) segítene, ha netán szükség lenne rá!
https://logout.hu/bejegyzes/ngabor2/nyugodj_bekeben_bordoi.html _ https://robo-venture.com -> Az ökotudatos, digitális közösségi alkotóműhely <-
-
olli
tag
WiFi LoRa 32 +DS3231 rtc .
Létezik arduino alatt feltölthető program amivel nemcsak a feltöltéskori dátum és idő marad meg, másnap reset után?By cool !
-
lanszelot
addikt
Hello,
Ez a project se működik.
Rengeteg hibát dob... -
vargalex
félisten
válasz lanszelot #19542 üzenetére
Én nem szoktam lib-eket csak úgy letölteni és bemásolni sehová. Egyszerűen Arduino IDE-ben az Eszközök->Könyvtárak kezelése alatt megkeresem a kérdéses lib-et (jelen esetben az U8glib-et, majd megnyomom a hozzá tartozó Telepítés gombot. Ezután a sketch-et bemásoltam az IDE-be, lementettem és azonnal hiba nélkül fordult.
Te hogyan csinálod ezt az egészet?Alex
-
lanszelot
addikt
----bocsi, nem engedi programkód blokba ------
Ellenőrzésnél dobja, meg se próbáltam feltölteni, felesleges.Arduino: 1.8.18 (Windows 10), Board: "ATmega328PB"
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_hw_spi.c: In function 'u8g_spi_out':
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_hw_spi.c:184:3: error: 'SPDR' undeclared (first use in this function); did you mean 'SPDR0'?
SPDR = data;
^~~~
SPDR0
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_hw_spi.c:184:3: note: each undeclared identifier is reported only once for each function it appears in
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_hw_spi.c:186:12: error: 'SPSR' undeclared (first use in this function); did you mean 'SPDR'?
while (!(SPSR & (1<<SPIF)))
^~~~
SPDR
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_hw_spi.c: In function 'u8g_com_arduino_hw_spi_fn':
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_hw_spi.c:220:7: error: 'SPCR' undeclared (first use in this function); did you mean 'SPCR0'?
SPCR = 0;
^~~~
SPCR0
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_hw_spi.c:227:2: error: 'SPSR' undeclared (first use in this function); did you mean 'SPCR'?
SPSR = (1 << SPI2X); /* double speed, issue 89 */
^~~~
SPCR
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_st7920_hw_spi.c: In function 'u8g_arduino_st7920_hw_spi_shift_out':
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_st7920_hw_spi.c:102:3: error: 'SPDR' undeclared (first use in this function); did you mean 'SPDR0'?
SPDR = val;
^~~~
SPDR0
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_st7920_hw_spi.c:102:3: note: each undeclared identifier is reported only once for each function it appears in
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_st7920_hw_spi.c:104:12: error: 'SPSR' undeclared (first use in this function); did you mean 'SPDR'?
while (!(SPSR & (1<<SPIF)))
^~~~
SPDR
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_st7920_hw_spi.c: In function 'u8g_com_arduino_st7920_hw_spi_fn':
C:\Users\robag\Documents\Arduino\libraries\U8glib\src\clib\u8g_com_arduino_st7920_hw_spi.c:204:7: error: 'SPCR' undeclared (first use in this function); did you mean 'SPCR0'?
SPCR = 0;
^~~~
SPCR0
exit status 1
Error compiling for board ATmega328PB.This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.[ Szerkesztve ]
-
olli
tag
[link] rtc_master
[link] oled könyvtár
[link] szintén,
ezek hiba nélkül fordítódnak esp32+ds3231 kódban.
Ami nem sikerül, az aktuális dátum/idő másnap, reset után, csak a fordítás időpontját mutatja.
25.50 C
20.25 C
32.00 C
Sending packet: 10
Saturday, March 04 2023 20:04:17
Mai állapot.
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 13
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress D0 = { 0x28, 0x31, 0xBF, 0x29, 0x07, 0x00, 0x00, 0x7D }; // "T1"
DeviceAddress D1 = { 0x28, 0x4F, 0x8E, 0x2A, 0x07, 0x00, 0x00, 0x37 }; // "T2"
/* for normal hardware wire use above */
#include <Wire.h>
#include <RtcDS3231.h>
RtcDS3231<TwoWire> Rtc(Wire);
// handy routine to return true if there was an error
// but it will also print out an error message with the given topic
bool wasError(const char* errorTopic = "")
{
uint8_t error = Rtc.LastError();
if (error != 0)
{
Serial.print("[");
Serial.print(errorTopic);
Serial.print("] WIRE communications error (");
Serial.print(error);
Serial.print(") : ");
switch (error)
{
case Rtc_Wire_Error_None:
Serial.println("(none?!)");
break;
case Rtc_Wire_Error_TxBufferOverflow:
Serial.println("transmit buffer overflow");
break;
case Rtc_Wire_Error_NoAddressableDevice:
Serial.println("no device responded");
break;
case Rtc_Wire_Error_UnsupportedRequest:
Serial.println("device doesn't support request");
break;
case Rtc_Wire_Error_Unspecific:
Serial.println("unspecified error");
break;
case Rtc_Wire_Error_CommunicationTimeout:
Serial.println("communications timed out");
break;
}
return true;
}
return false;
}
#include <Arduino.h>
#include "Wire.h"
#include "oled.h"
#include <WiFi.h>
#include "time.h"
#include <LoRa.h>
#include "secrets.h" // WiFi SSID & password
#define SCK 5 // GPIO5 -- SX1278's SCK
#define MISO 19 // GPIO19 -- SX1278's MISO
#define MOSI 27 // GPIO27 -- SX1278's MOSI
#define SS 18 // GPIO18 -- SX1278's CS
#define RST 14 // GPIO14 -- SX1278's RESET
#define DI0 26 // GPIO26 -- SX1278's IRQ(Interrupt Request)
#define BAND 433E6
unsigned int counter = 0;
#define RTC_ADDRESS 0x68 // I2C eszköz címe
String rssi = "RSSI --";
String packSize = "--";
String packet ;
struct tm timeinfo;
static char msg[20]; // character buffer
OLED display = OLED(4, 15, 16, 0x3C, 128, 32, true); // SSD1306
void setup() {
pinMode(16,OUTPUT);
pinMode(25,OUTPUT);
digitalWrite(16, LOW); // set GPIO16 low to reset OLED
delay(50);
digitalWrite(16, HIGH); // while OLED is running, must set GPIO16 in high
Serial.begin(115200);
while (!Serial);
SPI.begin(SCK,MISO,MOSI,SS);
LoRa.setPins(SS,RST,DI0);
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
Serial.println("init ok");
Wire.begin();
display.begin();
display.clear();
display.draw_string(4, 8, "RTC clock", OLED::DOUBLE_SIZE);
display.display();
//------- Initialize the Temperature measurement library--------------
sensors.begin();
sensors.setResolution(D0, 10); //T1
sensors.setResolution(D1, 10); //T2
}
void loop() {
sensors.requestTemperatures();
float T1 = sensors.getTempC(D0);
float T2 = sensors.getTempC(D1);
Serial.print("Sending packet: ");
Serial.println(counter);
// send packet
LoRa.beginPacket();
LoRa.print("hello ");
LoRa.print(counter);
LoRa.endPacket();
counter++;
digitalWrite(25, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(25, LOW); // turn the LED off by making the voltage LOW
delay(1000);
getTime(&timeinfo); // display time/date
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
RtcTemperature temp = Rtc.GetTemperature();
if (!wasError("loop GetTemperature"))
{
temp.Print(Serial);
// you may also get the temperature as a float and print it
// Serial.print(temp.AsFloatDegC());
Serial.println(" C ");
}
display.clear();
strftime (msg, 15, "%Y-%b-%d %a ", &timeinfo);
display.draw_string(16, 1, msg); // Display date
strftime (msg, 10, "%T ", &timeinfo); // Display time
display.draw_string(8, 12, msg, OLED::DOUBLE_SIZE);
display.display(); // Refresh screen
delay(3000);
display.clear();
display.setCursor(8,0);
display.println("T1= ");
display.setCursor(30,0);
display.println(T1);
display.setCursor(60, 0);
display.println(" C");
display.setCursor(8,12);
display.println("T2= ");
display.setCursor(30,12);
display.println(T2);
display.setCursor(60, 12);
display.println(" C");
display.display();
Serial.print(sensors.getTempC(D0));
Serial.println(" C");
Serial.print(sensors.getTempC(D1));
Serial.println(" C ");
}
//--- Convert decimal numbers to BCD -----------------------
byte decToBcd(byte val) {
return ( (val / 10 * 16) + (val % 10) );
}
//--- Convert BCD numbers to decimal ----------------------
byte bcdToDec(byte val) {
return ( (val / 16 * 10) + (val % 16) );
}
/*--- Set RTC time/date ------------------------------------
void setTime(struct tm* time) {
Wire.beginTransmission(RTC_ADDRESS);
Wire.write(0); // set register pointer to 00h
Wire.write(decToBcd(time->tm_sec)); // set seconds
Wire.write(decToBcd(time->tm_min)); // set minutes
Wire.write(decToBcd(time->tm_hour)); // set hours
Wire.write(time->tm_wday + 1); // set day of week (1=Sun, 7=Sat)
Wire.write(decToBcd(time->tm_mday)); // set date (1 to 31)
Wire.write(decToBcd(time->tm_mon) + 1); // set month
Wire.write(decToBcd(time->tm_year - 100)); // year from 2000 (0 to 99)
Wire.endTransmission();
}*/
//--- Read time/date from RTC ------------------------------
void getTime(struct tm* time) {
Wire.beginTransmission(RTC_ADDRESS);
Wire.write(0); // a kiolvasás kezdőcímének beállítása
Wire.endTransmission(false);
Wire.requestFrom(RTC_ADDRESS, 7); // Hét bájt kiolvasása (time/date)
time->tm_sec = bcdToDec(Wire.read() & 0x7f); // Másodpercek (0-59)
time->tm_min = bcdToDec(Wire.read()); // Percek (0 - 59)
time->tm_hour = bcdToDec(Wire.read() & 0x3f); // Órák (24h kijelzéshez)
time->tm_wday = bcdToDec(Wire.read() - 1); // Hét napja (0 - 6)
time->tm_mday = bcdToDec(Wire.read()); // hónap napja (1 - 31)
time->tm_mon = bcdToDec(Wire.read() - 1); // hónap sorszáma (0 - 11)
time->tm_year = bcdToDec(Wire.read()) + 100; // 1900-tól eltelt évek
}[ Szerkesztve ]
By cool !
Új hozzászólás Aktív témák
- Igencsak szerény méretekkel rendelkezik az Aetina Xe HPG architektúrás VGA-ja
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Vezetékes FEJhallgatók
- Netfone
- Milyen okostelefont vegyek?
- A Microsoft feltalálta az olcsó AI-t
- Motorola Moto G24 Power - hol van az erő?
- E-roller topik
- Kertészet, mezőgazdaság topik
- Xbox tulajok OFF topicja
- További aktív témák...