[ Adruino ] some useful

simple read Ads1x15

#include <Adafruit_ADS1015.h>Adafruit_ADS1015 ads;     /* Use thi for the 12-bit version */void setup() {    ads.setGain(GAIN_ONE);    ads.begin();}void loop(){    results = ads.readADC_Differential_0_1();}

ESP32 中断

volatile int interruptCounter;hw_timer_t * timer = NULL;portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED; //中断服务程序必须是一个返回void并且不接收任何参数的函数。//中断处理例程应具有  IRAM_ATTR  属性,以便编译器将代码放在IRAM中。void IRAM_ATTR onTimer() {  portENTER_CRITICAL_ISR(&timerMux);  interruptCounter++;  portEXIT_CRITICAL_ISR(&timerMux); }void setup() {   Serial.begin(115200);   timer = timerBegin(0, 80, true);  timerAttachInterrupt(timer, &onTimer, true);  timerAlarmWrite(timer, 1000000, true);  timerAlarmEnable(timer); }void loop(){    if (interruptCounter > 0) {        portENTER_CRITICAL(&timerMux);        interruptCounter--;        portEXIT_CRITICAL(&timerMux);        // Interrupt handling code    }}

ESP32

#include <BLEDevice.h>#include <BLEServer.h>#include <BLEUtils.h>#include <BLE2902.h>BLECharacteristic *pCharacteristic ;bool deviceConnected = false;float txValue = 0;#define SERVICE_UUID           "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" // UART service UUID#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"class MyServerCallbacks: public BLEServerCallbacks {    void onConnect(BLEServer* pServer) {      deviceConnected = true;    };    void onDisconnect(BLEServer* pServer) {      deviceConnected = false;    }};class MyCallbacks: public BLECharacteristicCallbacks {    void onWrite(BLECharacteristic *pCharacteristic) {      std::string rxValue = pCharacteristic->getValue();      if (rxValue.length() > 0) {        Serial.println("*********");        Serial.print("Received Value: ");        for (int i = 0; i < rxValue.length(); i++) {          Serial.print(rxValue[i]);        }        Serial.println();        // Do stuff based on the command received from the app        if (rxValue.find("A") != -1) {           Serial.print("Turning ON!");          digitalWrite(LED, HIGH);        }        else if (rxValue.find("B") != -1) {          Serial.print("Turning OFF!");          digitalWrite(LED, LOW);        }        Serial.println();        Serial.println("*********");      }    }};void setup() {  Serial.begin(115200);  pinMode(LED, OUTPUT);  // Create the BLE Device  BLEDevice::init("ESP32 BLE LBB"); // Give it a name  // Create the BLE Server  BLEServer *pServer = BLEDevice::createServer();  pServer->setCallbacks(new MyServerCallbacks());  // Create the BLE Service  BLEService *pService = pServer->createService(SERVICE_UUID);  // Create a BLE Characteristic  pCharacteristic = pService->createCharacteristic(                      CHARACTERISTIC_UUID_TX,                      BLECharacteristic::PROPERTY_NOTIFY                    );                        pCharacteristic->addDescriptor(new BLE2902());  BLECharacteristic *pCharacteristic = pService->createCharacteristic(                                         CHARACTERISTIC_UUID_RX,                                         BLECharacteristic::PROPERTY_WRITE                                       );  pCharacteristic->setCallbacks(new MyCallbacks());  // Start the service  pService->start();  // Start advertising  pServer->getAdvertising()->start();  Serial.println("Waiting a client connection to notify...");}void loop() {  if (deviceConnected) {    // Fabricate some arbitrary junk for now...    txValue = analogRead(readPin) / 3.456; // This could be an actual sensor reading!        // Let's convert the value to a char array:    char txString[8]; // make sure this is big enuffz    dtostrf(txValue, 1, 2, txString); // float_val, min_width, digits_after_decimal, char_buffer    //    pCharacteristic->setValue(txValue, 1); // To send the integer value//    pCharacteristic->setValue("Hello!"); // Sending a test message    pCharacteristic->setValue(txString);        pCharacteristic->notify(); // Send the value to the app!    Serial.print("*** Sent Value: ");    Serial.print(txString);    Serial.println(" ***");    // You can add the rxValue checks down here instead    // if you set "rxValue" as a global var at the top!    // Note you will have to delete "std::string" declaration    // of "rxValue" in the callback function.//    if (rxValue.find("A") != -1) { //      Serial.println("Turning ON!");//      digitalWrite(LED, HIGH);//    }//    else if (rxValue.find("B") != -1) {//      Serial.println("Turning OFF!");//      digitalWrite(LED, LOW);//    }  }  delay(100);

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章