Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   852 / 852
(#) denon888 válasza Panhard hozzászólására (») Hé, 23:30 /
 
Lehet. Ebben benne van a DS3231. Az előzőben is benne volt. A GitHubon találtam ezt, és ez tetszik neki. Lehet egy másik fordításnál meg erre fog hibát adni. Nemhiába, az elektronika bitek bájtok útjai kifürkészhetetlenek.
(#) metabo7000 hozzászólása 13:09 /
 

arduino C++ to MicroPython konvertálás

Hello!
rp2040 MicroPythonra szeretnék egy kódrészletet átírni arduino c++ rol eben van meg a kész rész!
  1. #include <Arduino.h>
  2.  
  3. #define CLOCK_PIN 26
  4. #define DATA_PIN 25
  5.  
  6. #define BUFFER_SIZE 23
  7. #define DATA_PERIOD_MS 80
  8.  
  9. uint8_t buff[BUFFER_SIZE];
  10.  
  11. uint8_t bitPos;
  12. unsigned long lastPeriodMs;
  13.  
  14. void IRAM_ATTR _CLK_ISR() {
  15.   unsigned long ms = millis();
  16.  
  17.   if (ms < lastPeriodMs) lastPeriodMs = ms;
  18.   if (ms - lastPeriodMs < DATA_PERIOD_MS) return;
  19.  
  20.   if (bitPos == BUFFER_SIZE) bitPos = 0;
  21.  
  22.   if (bitPos < BUFFER_SIZE) {
  23.     buff[bitPos++] = (GPIO.in >> DATA_PIN) & 0x1;
  24.   }
  25.  
  26.   if (bitPos == BUFFER_SIZE) lastPeriodMs = ms;
  27. }
  28.  
  29. float getMeasurement() {
  30.   int8_t sign;
  31.   int16_t value;
  32.  
  33.   sign = buff[20] == 0x1 ? -1 : 1;
  34.  
  35.   for (uint8_t i; i < BUFFER_SIZE; i++) {
  36.     if (buff[i] == 0x1) {
  37.       value |= 1 << i;
  38.     }
  39.   }
  40.  
  41.   return (value * sign) / 100.00;
  42. }
  43.  
  44. bool isValueAvailable() {
  45.   return bitPos == BUFFER_SIZE;
  46. }
  47.  
  48. void setup() {
  49.   Serial.begin(115200);
  50.  
  51.   while (!Serial)
  52.     ;
  53.  
  54.   pinMode(CLOCK_PIN, INPUT);
  55.   pinMode(DATA_PIN, INPUT);
  56.  
  57.   attachInterrupt(digitalPinToInterrupt(CLOCK_PIN), _CLK_ISR, RISING);
  58. }
  59.  
  60. unsigned long lastMillis;
  61.  
  62. void loop() {
  63.   if (isValueAvailable() && (millis() - lastMillis) > 100) {
  64.     Serial.println(getMeasurement());
  65.     lastMillis = millis();
  66.   }
  67. }
Következő: »»   852 / 852
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem