Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.54 KB | None | 0 0
  1. /*
  2. Definitions for the LEDS, switches and potentiometer on the
  3. software serial Sheild
  4.  
  5. author: nns
  6. created 15 Oct 2014
  7. modified 03 Nov 2019 LGT
  8. */
  9.  
  10. // hardware port definitions
  11. #include "SSBasicUtilities.h"
  12. #include "ASSP.h"
  13. #define LED_RED 3
  14. #define LED_YELLOW 5
  15. #define LED_PINK 6
  16. #define LED_WHITE 9
  17. #define LED_GREEN 10
  18. #define LED_BLUE 11
  19.  
  20. #define EMU A1
  21.  
  22. #define SWITCH1 A4
  23. #define SWITCH2 A5
  24.  
  25. #define POTENTIOMETER A0
  26. #define PORT1 1
  27. #define PORT2 2
  28. #define PORT3 3
  29. #define PORT4 4
  30.  
  31. /**
  32. configuration
  33. */
  34.  
  35. void setup()
  36. {
  37. // initialize the digital pins as outputs.
  38. pinMode(LED_RED, OUTPUT);
  39. pinMode(LED_YELLOW, OUTPUT);
  40. pinMode(LED_PINK, OUTPUT);
  41. pinMode(LED_WHITE, OUTPUT);
  42. pinMode(LED_GREEN, OUTPUT);
  43. pinMode(LED_BLUE, OUTPUT);
  44.  
  45. // Open hardware serial communications and wait for port to open:
  46. Serial.begin(57600);
  47. Serial.println("Software serial LED test program");
  48.  
  49. // now setup the switches
  50. pinMode(SWITCH1, INPUT_PULLUP);
  51. pinMode(SWITCH2, INPUT_PULLUP);
  52.  
  53. // now setup the POTENTIOMETER
  54. pinMode(POTENTIOMETER, INPUT);
  55.  
  56. //puts the Nano into testing mode for port 3
  57. SerialShield.setEmuMode(5);
  58. //SerialShield.showASSPmessages = true;
  59. }
  60.  
  61. void setLeds(boolean state) {
  62. Serial.print("Set LEDS to ");
  63. Serial.println(state);
  64. digitalWrite(LED_PINK, state);
  65. digitalWrite(LED_WHITE, state);
  66. digitalWrite(LED_GREEN, state);
  67. digitalWrite(LED_BLUE, state);
  68. }
  69.  
  70. void blinkLeds() {
  71. delay(200); //slow things down by waiting 0.5s
  72. setLeds(HIGH);
  73. delay(200); //slow things down
  74. setLeds(LOW);
  75. }
  76.  
  77. void cycleLeds() {
  78. int sw2 = digitalRead(SWITCH2);
  79. if (sw2 == LOW) {
  80. setLeds(LOW);
  81. digitalWrite(LED_BLUE, HIGH);
  82. delay(200);
  83. digitalWrite(LED_BLUE, LOW);
  84. digitalWrite(LED_GREEN, HIGH);
  85. delay(200);
  86. digitalWrite(LED_GREEN, LOW);
  87. digitalWrite(LED_WHITE, HIGH);
  88. delay(200);
  89. digitalWrite(LED_WHITE, LOW);
  90. digitalWrite(LED_PINK, HIGH);
  91. delay(200);
  92. digitalWrite(LED_PINK, LOW);
  93. delay(200);;
  94. digitalWrite(LED_PINK, HIGH);
  95. delay(200);
  96. digitalWrite(LED_WHITE, HIGH);
  97. digitalWrite(LED_PINK, LOW);
  98. delay(200);
  99. digitalWrite(LED_GREEN, HIGH);
  100. digitalWrite(LED_WHITE, LOW);
  101. delay(200);
  102. digitalWrite(LED_BLUE, HIGH);
  103. digitalWrite(LED_GREEN, LOW);
  104. delay(200);
  105. }
  106. }
  107.  
  108. void valuePrint()
  109. {
  110. int value = analogRead(POTENTIOMETER);
  111. Serial.println("The potentiometer value is : ");
  112. Serial.print(value);
  113. }
  114. void manualControl()
  115. {
  116. int v = analogRead(POTENTIOMETER);
  117. if (v < 256)
  118. {
  119. digitalWrite(LED_PINK, HIGH);
  120. digitalWrite(LED_WHITE, LOW);
  121. digitalWrite(LED_GREEN, LOW);
  122. digitalWrite(LED_BLUE, LOW);
  123. }
  124. else if (v > 768)
  125. {
  126. digitalWrite(LED_PINK, LOW);
  127. digitalWrite(LED_WHITE, LOW);
  128. digitalWrite(LED_GREEN, LOW);
  129. digitalWrite(LED_BLUE, HIGH);
  130. }
  131. else if ((v > 256) && (v < 512))
  132. {
  133. digitalWrite(LED_PINK, LOW);
  134. digitalWrite(LED_WHITE, HIGH);
  135. digitalWrite(LED_GREEN, LOW);
  136. digitalWrite(LED_BLUE, LOW);
  137. }
  138. else
  139. {
  140. digitalWrite(LED_PINK, LOW);
  141. digitalWrite(LED_WHITE, LOW);
  142. digitalWrite(LED_GREEN, HIGH);
  143. digitalWrite(LED_BLUE, LOW);
  144. }
  145. }
  146.  
  147. void cycleLedsWS2() {
  148. setLeds(LOW);
  149. digitalWrite(LED_BLUE, HIGH);
  150. delay(200);
  151. digitalWrite(LED_BLUE, LOW);
  152. digitalWrite(LED_GREEN, HIGH);
  153. delay(200);
  154. digitalWrite(LED_GREEN, LOW);
  155. digitalWrite(LED_WHITE, HIGH);
  156. delay(200);
  157. digitalWrite(LED_WHITE, LOW);
  158. digitalWrite(LED_PINK, HIGH);
  159. delay(200);
  160. digitalWrite(LED_PINK, LOW);
  161. delay(200);;
  162. digitalWrite(LED_PINK, HIGH);
  163. delay(200);
  164. digitalWrite(LED_WHITE, HIGH);
  165. digitalWrite(LED_PINK, LOW);
  166. delay(200);
  167. digitalWrite(LED_GREEN, HIGH);
  168. digitalWrite(LED_WHITE, LOW);
  169. delay(200);
  170. digitalWrite(LED_BLUE, HIGH);
  171. digitalWrite(LED_GREEN, LOW);
  172. delay(200);
  173. digitalWrite(LED_BLUE, LOW);
  174. delay(200);
  175. }
  176.  
  177. void processMessageContent (char message[]) {
  178. if (strcmp(message, "cycle leds") == 0) {
  179. cycleLedsWS2();
  180. }
  181. if (strcmp(message, "blue on") == 0) {
  182. digitalWrite(LED_BLUE, HIGH);
  183. }
  184. if (strcmp(message, "green on") == 0) {
  185. digitalWrite(LED_GREEN, HIGH);
  186. }
  187. if (strcmp(message, "white on") == 0) {
  188. digitalWrite(LED_WHITE, HIGH);
  189. }
  190. if (strcmp(message, "pink on") == 0) {
  191. digitalWrite(LED_PINK, HIGH);
  192. }
  193. if (strcmp(message, "blue off") == 0) {
  194. digitalWrite(LED_BLUE, LOW);
  195. }
  196. if (strcmp(message, "green off") == 0) {
  197. digitalWrite(LED_GREEN, LOW);
  198. }
  199. if (strcmp(message, "white off") == 0) {
  200. digitalWrite(LED_WHITE, LOW);
  201. }
  202. if (strcmp(message, "pink off") == 0) {
  203. digitalWrite(LED_PINK, LOW);
  204. }
  205. if (strcmp(message, "blink leds") == 0) {
  206. blinkLeds();
  207. }
  208. }
  209.  
  210. void portControl()
  211. {
  212. int v = analogRead(POTENTIOMETER);
  213. if (v < 256)
  214. {
  215. if (checkSerial ()) {
  216. setLeds(LOW);
  217. digitalWrite(LED_PINK, HIGH);
  218. Serial.print("Send message: ");
  219. Serial.println(serialBuffer);
  220. SerialShield.setMessageContent(serialBuffer);
  221. SerialShield.setMessageSender("xyz89");
  222. SerialShield.setMessageDestination("abc12");
  223. SerialShield.sendASSPMessage(1);
  224. }
  225. while (SerialShield.fetchASSPMessage()) {
  226. Serial.print("Recieved message: ");
  227. Serial.println(SerialShield.getMessageContent());
  228. processMessageContent(SerialShield.getMessageContent());
  229. SerialShield.getMessageDestination();
  230. SerialShield.getMessageSender();
  231. SerialShield.getMessagePort();
  232. }
  233. }
  234. else if (v > 768)
  235. {
  236. if (checkSerial ()) {
  237. setLeds(LOW);
  238. Serial.print("Send message: ");
  239. Serial.println(serialBuffer);
  240. SerialShield.setMessageContent(serialBuffer);
  241. SerialShield.setMessageSender("xyz89");
  242. SerialShield.setMessageDestination("abc12");
  243. SerialShield.sendASSPMessage(2);
  244. digitalWrite(LED_WHITE, HIGH);
  245. }
  246. while (SerialShield.fetchASSPMessage()) {
  247. Serial.print("Recieved message: ");
  248. Serial.println(SerialShield.getMessageContent());
  249. processMessageContent(SerialShield.getMessageContent());
  250. Serial.println(SerialShield.getMessageDestination());
  251. Serial.println(SerialShield.getMessageSender());
  252. Serial.println(SerialShield.getMessagePort());
  253. }
  254. }
  255. else if ((v > 256) && (v < 512))
  256. {
  257. if (checkSerial ()) {
  258. setLeds(LOW);
  259. Serial.print("Send message: ");
  260. Serial.println(serialBuffer);
  261. SerialShield.setMessageContent(serialBuffer);
  262. SerialShield.setMessageSender("xyz89");
  263. SerialShield.setMessageDestination("abc12");
  264. SerialShield.sendASSPMessage(3);
  265. digitalWrite(LED_GREEN, HIGH);
  266. }
  267. while (SerialShield.fetchASSPMessage()) {
  268. Serial.print("Recieved message: ");
  269. Serial.println(SerialShield.getMessageContent());
  270. processMessageContent(SerialShield.getMessageContent());
  271. Serial.println(SerialShield.getMessageDestination());
  272. Serial.println(SerialShield.getMessageSender());
  273. Serial.println(SerialShield.getMessagePort());
  274. }
  275. }
  276. else
  277. {
  278. if (checkSerial ()) {
  279. setLeds(LOW);
  280. Serial.print("Send message: ");
  281. Serial.println(serialBuffer);
  282. SerialShield.setMessageContent(serialBuffer);
  283. SerialShield.setMessageSender("xyz89");
  284. SerialShield.setMessageDestination("abc12");
  285. SerialShield.sendASSPMessage(4);
  286. digitalWrite(LED_BLUE, HIGH);
  287. }
  288. while (SerialShield.fetchASSPMessage()) {
  289. Serial.print("Recieved message: ");
  290. Serial.println(SerialShield.getMessageContent());
  291. processMessageContent(SerialShield.getMessageContent());
  292. Serial.println(SerialShield.getMessageDestination());
  293. Serial.println(SerialShield.getMessageSender());
  294. Serial.println(SerialShield.getMessagePort());
  295. }
  296. }
  297. }
  298.  
  299. void emuControl()
  300. {
  301. int v = analogRead(POTENTIOMETER);
  302. if (v < 256)
  303. {
  304. digitalWrite(LED_PINK, HIGH);
  305. digitalWrite(LED_WHITE, LOW);
  306. digitalWrite(LED_GREEN, LOW);
  307. digitalWrite(LED_BLUE, LOW);
  308. if (checkSerial()) {
  309. Serial.print("Send message: ");
  310. Serial.println(serialBuffer);
  311. SerialShield.setMessageContent(serialBuffer); // set up a message to send
  312. SerialShield.setMessageSender("xyz89");
  313. SerialShield.setMessageDestination("abc12");
  314. SerialShield.sendASSPMessage(1);
  315. }
  316. while (SerialShield.fetchASSPMessage()) {
  317. Serial.print("Received message: ");
  318. Serial.println(SerialShield.getMessageContent());
  319. processMessageContent(SerialShield.getMessageContent());
  320. Serial.println(SerialShield.getMessageDestination());
  321. Serial.println(SerialShield.getMessageSender());
  322. Serial.print("The message was recieved on port ");
  323. Serial.println(SerialShield.getMessagePort());
  324. }
  325. }
  326. else if (v > 768)
  327. {
  328. digitalWrite(LED_PINK, LOW);
  329. digitalWrite(LED_WHITE, LOW);
  330. digitalWrite(LED_GREEN, LOW);
  331. digitalWrite(LED_BLUE, HIGH);
  332. if (checkSerial()) {
  333. Serial.print("Send message: ");
  334. Serial.println(serialBuffer);
  335. SerialShield.setMessageContent(serialBuffer); // set up a message to send
  336. SerialShield.setMessageSender("xyz89");
  337. SerialShield.setMessageDestination("abc12");
  338. SerialShield.sendASSPMessage(4);
  339. }
  340. while (SerialShield.fetchASSPMessage()) {
  341. Serial.print("Received message: ");
  342. Serial.println(SerialShield.getMessageContent());
  343. processMessageContent(SerialShield.getMessageContent());
  344. Serial.println(SerialShield.getMessageDestination());
  345. Serial.println(SerialShield.getMessageSender());
  346. Serial.println(SerialShield.getMessagePort());
  347. }
  348. }
  349. else if ((v > 256) && (v < 512))
  350. {
  351. digitalWrite(LED_PINK, LOW);
  352. digitalWrite(LED_WHITE, HIGH);
  353. digitalWrite(LED_GREEN, LOW);
  354. digitalWrite(LED_BLUE, LOW);
  355. if (checkSerial()) {
  356. Serial.print("Send message: ");
  357. Serial.println(serialBuffer);
  358. SerialShield.setMessageContent(serialBuffer); // set up a message to send
  359. SerialShield.setMessageSender("xyz89");
  360. SerialShield.setMessageDestination("abc12");
  361. SerialShield.sendASSPMessage(2);
  362. }
  363. while (SerialShield.fetchASSPMessage()) {
  364. Serial.print("Received message: ");
  365. Serial.println(SerialShield.getMessageContent());
  366. processMessageContent(SerialShield.getMessageContent());
  367. Serial.println(SerialShield.getMessageDestination());
  368. Serial.println(SerialShield.getMessageSender());
  369. Serial.println(SerialShield.getMessagePort());
  370. }
  371. }
  372. else
  373. {
  374. digitalWrite(LED_PINK, LOW);
  375. digitalWrite(LED_WHITE, LOW);
  376. digitalWrite(LED_GREEN, HIGH);
  377. digitalWrite(LED_BLUE, LOW);
  378. if (checkSerial()) {
  379. Serial.print("Send message: ");
  380. Serial.println(serialBuffer);
  381. SerialShield.setMessageContent(serialBuffer); // set up a message to send
  382. SerialShield.setMessageSender("xyz89");
  383. SerialShield.setMessageDestination("abc12");
  384. SerialShield.sendASSPMessage(3);
  385. }
  386. while (SerialShield.fetchASSPMessage()) {
  387. Serial.print("Received message: ");
  388. Serial.println(SerialShield.getMessageContent());
  389. processMessageContent(SerialShield.getMessageContent());
  390. Serial.println(SerialShield.getMessageDestination());
  391. Serial.println(SerialShield.getMessageSender());
  392. Serial.println(SerialShield.getMessagePort());
  393. }
  394. }
  395. }
  396.  
  397. void loop() // run over and over
  398. {
  399. //digitalWrite(LED_GREEN, HIGH);
  400.  
  401. // check the state of a switch
  402. emuControl();
  403. /*int sw1 = digitalRead(SWITCH1);
  404. if (sw1 == LOW){
  405. Serial.println("Switch 1 pressed");
  406. setLeds(HIGH);
  407. }
  408. else{
  409. setLeds(LOW);
  410. }
  411. cycleLeds();
  412. blinkLeds();
  413. cycleLEDS ();
  414. manualControl();
  415. delay(100);*/
  416. /*if (checkSerial ()) {
  417. Serial.print("Send message: ");
  418. Serial.println(serialBuffer);
  419. SerialShield.setMessageContent(serialBuffer);
  420. SerialShield.sendASSPMessage(portControl);
  421. }
  422. while (SerialShield.fetchASSPMessage(portControl)) {
  423. Serial.print("Recieved message: ");
  424. Serial.println(SerialShield.getMessageContent());
  425. processMessageContent(SerialShield.getMessageContent());
  426. }*/
  427. /*int sw2 = digitalRead(SWITCH2);
  428. if (sw2 == LOW) {
  429. SerialShield.setMessageContent("?");
  430. SerialShield.sendASSPMessage(3);
  431. }*/
  432.  
  433.  
  434.  
  435.  
  436. /*delay(500); //slow things down by waiting 0.5s
  437. digitalWrite(LED_GREEN, LOW);
  438. Serial.println("loop again!");
  439. delay(500); //slow things down*/
  440. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement