123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- /*
- * Copyright (c) 2006-2022, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2021-12-10 Meco Man first version
- */
- #include <Arduino.h>
- #include <rtthread.h>
- #include <SPI.h>
- #include <Wire.h>
- #define ARDU_TEST_GPIO
- #define ARDU_TEST_PWM
- //#define ARDU_TEST_ADAFRUIT_I2C
- //#define ARDU_TEST_ADAFRUIT_SPI
- //#define ARDU_TEST_SPI
- //#define ARDU_TEST_I2C
- #define ARDU_TEST_INT
- #define ARDU_TEST_DIGITAL_READ
- //#define ARDU_TEST_ADC_READ
- //#define ARDU_TEST_BMI160_PKG
- #if defined(ARDU_TEST_ADAFRUIT_I2C) || defined(ARDU_TEST_ADAFRUIT_SPI)
- #include <Adafruit_BusIO_Register.h>
- #endif
- #ifdef ARDU_TEST_ADAFRUIT_I2C
- #include <Adafruit_I2CDevice.h>
- Adafruit_I2CDevice i2c_dev(0x2D);
- Adafruit_BusIO_Register i2c_reg(&i2c_dev, 0x6261, 2, 0, 2);
- #endif
- #ifdef ARDU_TEST_ADAFRUIT_SPI
- #include "Adafruit_SPIDevice.h"
- Adafruit_SPIDevice spi_dev(D10, 100000);
- #endif
- #ifdef ARDU_TEST_BMI160_PKG
- #include "DFRobot_BMI160.h"
- DFRobot_BMI160 *bmi160;
- #endif
- static char buf[16] = {"test"};
- static char buf2[16] = {"AB"};
- void test_int()
- {
- Serial.println("Interrupt Triggered\r\n");
- }
- void setup(void)
- {
- /* put your setup code here, to run once: */
- //串口
- Serial.write("Hello from Arduino\r\n");
- #ifdef ARDU_TEST_GPIO //数字管脚输出
- pinMode(D2, OUTPUT);
- pinMode(D4, OUTPUT);
- digitalWrite(D4, 1);
- pinMode(D7, OUTPUT);
- digitalWrite(D7, 0);
- pinMode(D18, OUTPUT); //LED6
- #endif
- pinMode(D21, INPUT);
- #ifdef ARDU_TEST_PWM //测试PWM输出
- analogWriteFrequency(10);
- analogWrite(D3, 80);
- analogWrite(D5, 127);
- analogWrite(D6, 200);
- #endif
- #ifdef ARDU_TEST_ADAFRUIT_I2C //ADAFRUIT I2C
- i2c_dev.begin();
- #endif
- #ifdef ARDU_TEST_ADAFRUIT_SPI //ADAFRUIT SPI
- spi_dev.begin();
- #endif
- #ifdef ARDU_TEST_I2C //I2C
- Wire.begin();
- #endif
- #ifdef ARDU_TEST_SPI //SPI
- SPI.begin();
- SPI.beginTransaction(SPISettings(100000, MSBFIRST, SPI_MODE1));
- pinMode(D10, OUTPUT);
- digitalWrite(D10, HIGH);
- #endif
- #ifdef ARDU_TEST_INT //中断输入
- attachInterrupt(digitalPinToInterrupt(D24), test_int, FALLING);
- #endif
- #ifdef ARDU_TEST_DIGITAL_READ //数字管脚输入
- pinMode(D20,INPUT);
- pinMode(D21,INPUT);
- pinMode(D22,INPUT);
- pinMode(D23,INPUT);
- #endif
- #ifdef ARDU_TEST_BMI160_PKG
- bmi160=new DFRobot_BMI160();
- int result= bmi160->I2cInit();
- if (result)
- {
- rt_kprintf("BMI160 Init failed.%d\r\n",result);
- }
- bmi160->setStepPowerMode(bmi160->stepNormalPowerMode);
- #endif
- }
- void loop(void)
- {
- /* put your main code here, to run repeatedly: */
- static int count = 0;
- count++;
- #ifdef ARDU_TEST_GPIO
- digitalWrite(D2, 1);
- digitalWrite(D18, 0);
- #endif
- delay(250);
- #ifdef ARDU_TEST_GPIO
- digitalWrite(D2, 0);
- digitalWrite(D18, 1);
- #endif
- delay(250);
- #ifdef ARDU_TEST_ADC_READ
- int val = analogRead(A0 + count % 6);
- rt_kprintf("A%d=%d\r\n", count % 6, val);
- #endif
- #ifdef ARDU_TEST_ADAFRUIT_I2C
- i2c_dev.write((uint8_t *)buf, strlen(buf), true, (uint8_t *)buf2, 2);
- i2c_reg.write((uint8_t *)buf, 4);
- #endif
- #ifdef ARDU_TEST_ADAFRUIT_SPI
- spi_dev.beginTransactionWithAssertingCS();
- spi_dev.transfer((uint8_t *)buf, strlen(buf));
- spi_dev.endTransactionWithDeassertingCS();
- #endif
- #ifdef ARDU_TEST_I2C
- Wire.beginTransmission(0x2D);
- Wire.write((uint8_t *)buf, strlen(buf));
- Wire.endTransmission();
- #endif
- #ifdef ARDU_TEST_SPI
- digitalWrite(D10, LOW);
- SPI.transfer((uint8_t *)buf, 4);
- digitalWrite(D10, HIGH);
- buf[4] = 0;
- Serial.print(buf);
- #endif
- #ifdef ARDU_TEST_DIGITAL_READ
- if (digitalRead(D20) == LOW) {
- Serial.println("UP");
- }
- if (digitalRead(D21) == LOW) {
- Serial.println("DOWN");
- }
- if (digitalRead(D22) == LOW) {
- Serial.println("LEFT");
- }
- if (digitalRead(D23) == LOW) {
- Serial.println("RIGHT");
- }
- #endif
- #ifdef ARDU_TEST_BMI160_PKG
- int16_t data[16]={0,0,0};
- int result=bmi160->getAccelData(data);
- rt_kprintf("Accel[R=%d]:%d,%d,%d\r\n",result,data[0],data[1],data[2]);
- result=bmi160->getAccelGyroData(data);
- rt_kprintf("Gyro [R=%d]:%d,%d,%d\r\n",result,data[0],data[1],data[2]);
- #endif
- }
|