arduino_examples.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. /*
  2. * Copyright (c) 2006-2023, 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. * 2023-05-30 shiwa ES32VF2264
  10. */
  11. #include <Arduino.h>
  12. #define ARDU_TEST_GPIO
  13. #define ARDU_TEST_PWM
  14. #define ARDU_TEST_DIGITAL_READ
  15. #define ARDU_TEST_INT
  16. //#define ARDU_TEST_ADC_READ
  17. //#define ARDU_TEST_I2C
  18. //#define ARDU_TEST_SPI
  19. //#define ARDU_TEST_ADAFRUIT_I2C
  20. //#define ARDU_TEST_ADAFRUIT_SPI
  21. //#define ARDU_TEST_UART
  22. #ifdef ARDU_TEST_I2C
  23. #include <Wire.h>
  24. #endif
  25. #ifdef ARDU_TEST_SPI
  26. #include <SPI.h>
  27. #endif
  28. #if defined(ARDU_TEST_ADAFRUIT_I2C) || defined(ARDU_TEST_ADAFRUIT_SPI)
  29. #include <Adafruit_BusIO_Register.h>
  30. #endif
  31. #ifdef ARDU_TEST_ADAFRUIT_I2C
  32. #include <Adafruit_I2CDevice.h>
  33. Adafruit_I2CDevice i2c_dev(0x2D);
  34. Adafruit_BusIO_Register i2c_reg(&i2c_dev, 0x4241, 2, 0, 2);
  35. #endif
  36. #ifdef ARDU_TEST_ADAFRUIT_SPI
  37. #include "Adafruit_SPIDevice.h"
  38. Adafruit_SPIDevice spi_dev(D10, 100000);
  39. #endif
  40. static char buf[16] = {"test"};
  41. static char buf2[16] = {"AB"};
  42. void test_int()
  43. {
  44. Serial.println("Interrupt Triggered");
  45. }
  46. void setup(void)
  47. {
  48. /* No unused warnings */
  49. (void)buf;
  50. (void)buf2;
  51. pinMode(LED_BUILTIN, OUTPUT);
  52. Serial.begin();
  53. Serial.println("Hello arduino");
  54. #ifdef ARDU_TEST_GPIO //数字管脚输出
  55. pinMode(D2, OUTPUT);
  56. pinMode(D4, OUTPUT);
  57. digitalWrite(D4, 1);
  58. pinMode(D7, OUTPUT);
  59. digitalWrite(D7, 0);
  60. pinMode(D18, OUTPUT); //LED6
  61. #endif
  62. #ifdef ARDU_TEST_INT //中断输入
  63. attachInterrupt(digitalPinToInterrupt(D24), test_int, FALLING);
  64. #endif
  65. #ifdef ARDU_TEST_DIGITAL_READ //数字管脚输入
  66. pinMode(D20,INPUT);
  67. pinMode(D21,INPUT);
  68. pinMode(D22,INPUT);
  69. pinMode(D23,INPUT);
  70. #endif
  71. #ifdef ARDU_TEST_PWM //测试PWM输出
  72. analogWriteFrequency(10);
  73. analogWrite(D3, 80);
  74. analogWrite(D5, 127);
  75. analogWrite(D6, 200);
  76. #endif
  77. #ifdef ARDU_TEST_I2C //I2C
  78. Wire.begin();
  79. #endif
  80. #ifdef ARDU_TEST_SPI //SPI
  81. SPI.begin();
  82. /* MSB Second IdleLow */
  83. SPI.beginTransaction(SPISettings(100000, MSBFIRST, SPI_MODE1));
  84. pinMode(D10, OUTPUT);
  85. digitalWrite(D10, HIGH);
  86. #endif
  87. #ifdef ARDU_TEST_ADAFRUIT_I2C //ADAFRUIT I2C
  88. i2c_dev.begin();
  89. #endif
  90. #ifdef ARDU_TEST_ADAFRUIT_SPI //ADAFRUIT SPI
  91. spi_dev.begin();
  92. #endif
  93. #ifdef ARDU_TEST_UART
  94. Serial2.begin();
  95. #endif
  96. }
  97. void loop(void)
  98. {
  99. /* put your main code here, to run repeatedly: */
  100. digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
  101. //delay(250);
  102. #ifdef ARDU_TEST_GPIO
  103. digitalWrite(D2, 1);
  104. digitalWrite(D18, 0);
  105. #endif
  106. delay(250);
  107. #ifdef ARDU_TEST_GPIO
  108. digitalWrite(D2, 0);
  109. digitalWrite(D18, 1);
  110. #endif
  111. delay(250);
  112. #ifdef ARDU_TEST_ADC_READ
  113. int val1 = analogRead(A0);
  114. int val2 = analogRead(A1);
  115. rt_kprintf("A0=%d,A2=%d\r\n", val1, val2);
  116. #endif
  117. #ifdef ARDU_TEST_DIGITAL_READ
  118. if (digitalRead(D20) == LOW) {
  119. Serial.println("UP");
  120. }
  121. if (digitalRead(D21) == LOW) {
  122. Serial.println("DOWN");
  123. }
  124. if (digitalRead(D22) == LOW) {
  125. Serial.println("LEFT");
  126. }
  127. if (digitalRead(D23) == LOW) {
  128. Serial.println("RIGHT");
  129. }
  130. #endif
  131. #ifdef ARDU_TEST_I2C
  132. strcpy(buf,"Hello");
  133. Wire.beginTransmission(0x2D);
  134. Wire.write((uint8_t *)buf, strlen(buf));
  135. Wire.endTransmission();
  136. #endif
  137. #ifdef ARDU_TEST_SPI
  138. strcpy(buf,"ABCD");
  139. digitalWrite(D10, LOW);
  140. SPI.transfer((uint8_t *)buf, strlen(buf));
  141. digitalWrite(D10, HIGH);
  142. buf[4] = 0;
  143. Serial.print(buf);
  144. #endif
  145. #ifdef ARDU_TEST_ADAFRUIT_I2C
  146. strcpy(buf2,"Hello");
  147. strcpy(buf,"RTduino");
  148. i2c_dev.write((uint8_t *)buf, strlen(buf), true, (uint8_t *)buf2, strlen(buf2));
  149. i2c_reg.write((uint8_t *)buf2, 5);
  150. #endif
  151. #ifdef ARDU_TEST_ADAFRUIT_SPI
  152. strcpy(buf,"TEST");
  153. spi_dev.beginTransactionWithAssertingCS();
  154. spi_dev.transfer((uint8_t *)buf, strlen(buf));
  155. spi_dev.endTransactionWithDeassertingCS();
  156. #endif
  157. #ifdef ARDU_TEST_UART
  158. Serial2.println("Hello");
  159. #endif
  160. }