arduino_examples.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. /*
  2. * Copyright (c) 2006-2022, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2021-12-10 Meco Man first version
  9. * 2022-07-11 shiwa add examples for es32f3696
  10. */
  11. #include <Arduino.h>
  12. #include <rtthread.h>
  13. #include <SPI.h>
  14. #include <Wire.h>
  15. #define ARDU_TEST_GPIO
  16. #define ARDU_TEST_PWM
  17. //#define ARDU_TEST_ADAFRUIT_I2C
  18. //#define ARDU_TEST_ADAFRUIT_SPI
  19. //#define ARDU_TEST_SPI
  20. //#define ARDU_TEST_I2C
  21. #define ARDU_TEST_INT
  22. #define ARDU_TEST_DIGITAL_READ
  23. //#define ARDU_TEST_ADC_READ
  24. //#define ARDU_TEST_BMI160_PKG
  25. #if defined(ARDU_TEST_ADAFRUIT_I2C) || defined(ARDU_TEST_ADAFRUIT_SPI)
  26. #include <Adafruit_BusIO_Register.h>
  27. #endif
  28. #ifdef ARDU_TEST_ADAFRUIT_I2C
  29. #include <Adafruit_I2CDevice.h>
  30. Adafruit_I2CDevice i2c_dev(0x2D);
  31. Adafruit_BusIO_Register i2c_reg(&i2c_dev, 0x6261, 2, 0, 2);
  32. #endif
  33. #ifdef ARDU_TEST_ADAFRUIT_SPI
  34. #include "Adafruit_SPIDevice.h"
  35. Adafruit_SPIDevice spi_dev(D10, 100000);
  36. #endif
  37. #ifdef ARDU_TEST_BMI160_PKG
  38. #include "DFRobot_BMI160.h"
  39. DFRobot_BMI160 *bmi160;
  40. #endif
  41. static char buf[16] = {"test"};
  42. static char buf2[16] = {"AB"};
  43. void test_int()
  44. {
  45. Serial.println("Interrupt Triggered\r\n");
  46. }
  47. void setup(void)
  48. {
  49. /* put your setup code here, to run once: */
  50. //串口
  51. Serial.write("Hello from Arduino\r\n");
  52. #ifdef ARDU_TEST_GPIO //数字管脚输出
  53. pinMode(D2, OUTPUT);
  54. pinMode(D4, OUTPUT);
  55. digitalWrite(D4, 1);
  56. pinMode(D7, OUTPUT);
  57. digitalWrite(D7, 0);
  58. pinMode(D18, OUTPUT); //LED6
  59. #endif
  60. pinMode(D21, INPUT);
  61. #ifdef ARDU_TEST_PWM //测试PWM输出
  62. analogWriteFrequency(10);
  63. analogWrite(D3, 80);
  64. analogWrite(D5, 127);
  65. analogWrite(D6, 200);
  66. #endif
  67. #ifdef ARDU_TEST_ADAFRUIT_I2C //ADAFRUIT I2C
  68. i2c_dev.begin();
  69. #endif
  70. #ifdef ARDU_TEST_ADAFRUIT_SPI //ADAFRUIT SPI
  71. spi_dev.begin();
  72. #endif
  73. #ifdef ARDU_TEST_I2C //I2C
  74. Wire.begin();
  75. #endif
  76. #ifdef ARDU_TEST_SPI //SPI
  77. SPI.begin();
  78. SPI.beginTransaction(SPISettings(100000, MSBFIRST, SPI_MODE1));
  79. pinMode(D10, OUTPUT);
  80. digitalWrite(D10, HIGH);
  81. #endif
  82. #ifdef ARDU_TEST_INT //中断输入
  83. attachInterrupt(digitalPinToInterrupt(D24), test_int, FALLING);
  84. #endif
  85. #ifdef ARDU_TEST_DIGITAL_READ //数字管脚输入
  86. pinMode(D20,INPUT);
  87. pinMode(D21,INPUT);
  88. pinMode(D22,INPUT);
  89. pinMode(D23,INPUT);
  90. #endif
  91. #ifdef ARDU_TEST_BMI160_PKG
  92. bmi160=new DFRobot_BMI160();
  93. int result= bmi160->I2cInit();
  94. if (result)
  95. {
  96. rt_kprintf("BMI160 Init failed.%d\r\n",result);
  97. }
  98. bmi160->setStepPowerMode(bmi160->stepNormalPowerMode);
  99. #endif
  100. }
  101. void loop(void)
  102. {
  103. /* put your main code here, to run repeatedly: */
  104. static int count = 0;
  105. count++;
  106. #ifdef ARDU_TEST_GPIO
  107. digitalWrite(D2, 1);
  108. digitalWrite(D18, 0);
  109. #endif
  110. delay(250);
  111. #ifdef ARDU_TEST_GPIO
  112. digitalWrite(D2, 0);
  113. digitalWrite(D18, 1);
  114. #endif
  115. delay(250);
  116. #ifdef ARDU_TEST_ADC_READ
  117. int val = analogRead(A0 + count % 6);
  118. rt_kprintf("A%d=%d\r\n", count % 6, val);
  119. #endif
  120. #ifdef ARDU_TEST_ADAFRUIT_I2C
  121. i2c_dev.write((uint8_t *)buf, strlen(buf), true, (uint8_t *)buf2, 2);
  122. i2c_reg.write((uint8_t *)buf, 4);
  123. #endif
  124. #ifdef ARDU_TEST_ADAFRUIT_SPI
  125. spi_dev.beginTransactionWithAssertingCS();
  126. spi_dev.transfer((uint8_t *)buf, strlen(buf));
  127. spi_dev.endTransactionWithDeassertingCS();
  128. #endif
  129. #ifdef ARDU_TEST_I2C
  130. Wire.beginTransmission(0x2D);
  131. Wire.write((uint8_t *)buf, strlen(buf));
  132. Wire.endTransmission();
  133. #endif
  134. #ifdef ARDU_TEST_SPI
  135. digitalWrite(D10, LOW);
  136. SPI.transfer((uint8_t *)buf, 4);
  137. digitalWrite(D10, HIGH);
  138. buf[4] = 0;
  139. Serial.print(buf);
  140. #endif
  141. #ifdef ARDU_TEST_DIGITAL_READ
  142. if (digitalRead(D20) == LOW) {
  143. Serial.println("UP");
  144. }
  145. if (digitalRead(D21) == LOW) {
  146. Serial.println("DOWN");
  147. }
  148. if (digitalRead(D22) == LOW) {
  149. Serial.println("LEFT");
  150. }
  151. if (digitalRead(D23) == LOW) {
  152. Serial.println("RIGHT");
  153. }
  154. #endif
  155. #ifdef ARDU_TEST_BMI160_PKG
  156. int16_t data[16]={0,0,0};
  157. int result=bmi160->getAccelData(data);
  158. rt_kprintf("Accel[R=%d]:%d,%d,%d\r\n",result,data[0],data[1],data[2]);
  159. result=bmi160->getAccelGyroData(data);
  160. rt_kprintf("Gyro [R=%d]:%d,%d,%d\r\n",result,data[0],data[1],data[2]);
  161. #endif
  162. }