uni

Thing1's amazing uni repo
Log | Files | Refs

helper.h (2138B)


      1 #ifndef __HELPER_H_
      2 #define __HELPER_H_
      3 #include <Servo.h>
      4 #include <stdint.h>
      5 
      6 #define GREEN_LED 7
      7 #define YELLOW_LED 12
      8 #define RED_LED 13
      9 
     10 #define BUTTONA 4
     11 #define BUTTONB 2
     12 
     13 #define SERVOA_PIN 6
     14 #define SERVOB_PIN 5
     15 
     16 #define LDRA A2
     17 #define LDRB A1
     18 #define LDRC A0
     19 
     20 uint8_t SERVOA_ZERO = 84;
     21 uint8_t SERVOB_ZERO = 85;
     22 uint8_t SPEEDA = 10;
     23 uint8_t SPEEDB = 10;
     24 
     25 #define ANALOG_MAX 1023
     26 
     27 #define IRTRANSMITTER 3
     28 #define IRRECEVIER 2
     29 
     30 #define IRFREQ 38000
     31 
     32 #define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
     33 
     34 uint16_t LDRA_SWITCH = 0;
     35 uint16_t LDRB_SWITCH = 0;
     36 uint16_t LDRC_SWITCH = 0;
     37 
     38 enum DIRECTIONS {
     39 	FWD = 1,
     40 	BWD = -1,
     41 	LFT = -2,
     42 	RGT = 2
     43 };
     44 
     45 Servo servoA;
     46 Servo servoB;
     47 
     48 void
     49 setupRobot() {
     50 	Serial.begin(9600);
     51 	pinMode(GREEN_LED, OUTPUT);
     52 	pinMode(YELLOW_LED, OUTPUT);
     53 	pinMode(RED_LED, OUTPUT);
     54 	pinMode(BUTTONA, INPUT);
     55 	pinMode(BUTTONB, INPUT);
     56 	pinMode(SERVOA_PIN, OUTPUT);
     57 	pinMode(SERVOB_PIN, OUTPUT);
     58 	pinMode(LDRA, INPUT);
     59 	pinMode(LDRB, INPUT);
     60 	pinMode(LDRC, INPUT);
     61 	pinMode(IRTRANSMITTER, OUTPUT);
     62 	pinMode(IRRECEVIER, INPUT);
     63 	servoA.attach(SERVOA_PIN);
     64 	servoB.attach(SERVOB_PIN);
     65 	servoA.write(SERVOA_ZERO);
     66 	servoB.write(SERVOB_ZERO);
     67 }
     68 
     69 void
     70 SEprintf(const char *fmt, ...) {
     71 	char sbuf[256] = { 0 };
     72 	va_list ap;
     73 
     74 	va_start(ap, fmt);
     75 	vsnprintf(sbuf, 256, fmt, ap);
     76 	va_end(ap);
     77 
     78 	Serial.print(sbuf);
     79 }
     80 
     81 
     82 bool
     83 isObstacle() {
     84 	int readings = 0;
     85 	tone(IRTRANSMITTER, IRFREQ);
     86 	delay(5);
     87 	for (int i = 0; i < 100; i++) {
     88 		if (digitalRead(IRRECEVIER) == LOW) readings++;
     89 	}
     90 	noTone(IRTRANSMITTER);
     91 	return (readings >= 80);
     92 }
     93 
     94 bool
     95 isLDRBright(int pin) {
     96 	int v = analogRead(pin);
     97 	switch (pin) {
     98 	case LDRA:
     99 		return (v > LDRA_SWITCH);
    100 	case LDRB:
    101 		return (v > LDRB_SWITCH);
    102 	case LDRC:
    103 		return (v > LDRC_SWITCH);
    104 	}
    105 }
    106 
    107 void
    108 setLEDs(int g, int y, int r) {
    109 	digitalWrite(GREEN_LED, g);
    110 	digitalWrite(YELLOW_LED, y);
    111 	digitalWrite(RED_LED, r);
    112 }
    113 
    114 void
    115 waitButton(int pin, int state) {
    116 	while (digitalRead(pin) != !state) ;
    117 	delay(50);
    118 	while (digitalRead(pin) != state) ;
    119 	delay(50);
    120 }
    121 bool
    122 isButtonAPressed() {
    123 	return !digitalRead(BUTTONA);
    124 }
    125 
    126 bool
    127 isButtonBPressed() {
    128 	return !digitalRead(BUTTONB);
    129 }
    130 #endif