uni

Thing1's amazing uni repo
Log | Files | Refs

helper.h (2067B)


      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 = 83;
     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 	tone(IRTRANSMITTER, IRFREQ);
     85 	delay(5);
     86 	bool ret =  (digitalRead(IRRECEVIER) == LOW);
     87 	noTone(IRTRANSMITTER);
     88 	return ret;
     89 }
     90 
     91 bool
     92 isLDRBright(int pin) {
     93 	int v = analogRead(pin);
     94 	switch (pin) {
     95 	case LDRA:
     96 		return (v > LDRA_SWITCH);
     97 	case LDRB:
     98 		return (v > LDRB_SWITCH);
     99 	case LDRC:
    100 		return (v > LDRC_SWITCH);
    101 	}
    102 }
    103 
    104 void
    105 setLEDs(int g, int y, int r) {
    106 	digitalWrite(GREEN_LED, g);
    107 	digitalWrite(YELLOW_LED, y);
    108 	digitalWrite(RED_LED, r);
    109 }
    110 
    111 void
    112 waitButton(int pin, int state) {
    113 	while (digitalRead(pin) != !state) ;
    114 	delay(50);
    115 	while (digitalRead(pin) != state) ;
    116 	delay(50);
    117 }
    118 bool
    119 isButtonAPressed() {
    120 	return !digitalRead(BUTTONA);
    121 }
    122 
    123 bool
    124 isButtonBPressed() {
    125 	return !digitalRead(BUTTONB);
    126 }
    127 #endif