From edf381f59e25cfa4add44e0c397a1d29eb3747eb Mon Sep 17 00:00:00 2001 From: Clifton Craig Date: Sat, 9 Sep 2017 15:46:01 -0700 Subject: [PATCH 1/2] Adds Cliff's bluebot Arduino code. --- arduino/bluebot/bluebot.ino | 303 ++++++++++++++++++++++++++++++++++++ 1 file changed, 303 insertions(+) create mode 100644 arduino/bluebot/bluebot.ino diff --git a/arduino/bluebot/bluebot.ino b/arduino/bluebot/bluebot.ino new file mode 100644 index 0000000..ac1af15 --- /dev/null +++ b/arduino/bluebot/bluebot.ino @@ -0,0 +1,303 @@ +//BlueBot V1.0 +//2017.05.03 +//Clifton C. Craig + +#include //servo library +#define send + +Servo myservo; // create servo object to control servo +char getstr; +int AUTONOMOUS = 1; +int MANUAL = 0; +int state = 0; +int Echo = A4; +int Trig = A5; +//Right wheel +int ENA = 11; +int in1 = 9; +int in2 = 8; + +//Left wheel +int ENB = 5; +int in3 = 7; +int in4 = 6; + +int ABS = 140; +int rightDistance = 0,leftDistance = 0,middleDistance = 0; +int THRESHOLD = 30; + +void _mForward() +{ + analogWrite(ENA,ABS); + analogWrite(ENB,ABS); + digitalWrite(in1,LOW); + digitalWrite(in2,HIGH); + digitalWrite(in3,LOW); + digitalWrite(in4,HIGH); + Serial.println("go forward!"); +} + +void _mBack() +{ + analogWrite(ENA,ABS); + analogWrite(ENB,ABS); + digitalWrite(in1,HIGH); + digitalWrite(in2,LOW); + digitalWrite(in3,HIGH); + digitalWrite(in4,LOW); + Serial.println("go back!"); +} + +void _mleft() +{ + analogWrite(ENA,255); + analogWrite(ENB,255); + digitalWrite(in1,LOW); + digitalWrite(in2,HIGH); + digitalWrite(in3,HIGH); + digitalWrite(in4,LOW); + Serial.println("go left!"); +} + +void _mright() +{ + analogWrite(ENA,255); + analogWrite(ENB,255); + digitalWrite(in1,HIGH); + digitalWrite(in2,LOW); + digitalWrite(in3,LOW); + digitalWrite(in4,HIGH); + Serial.println("go right!"); +} +void _mStop() +{ + digitalWrite(ENA,LOW); + digitalWrite(ENB,LOW); + Serial.println("Stop!"); +} + /*Ultrasonic distance measurement Sub function*/ +int Distance_test() +{ + delay(90); + digitalWrite(Trig, LOW); + delayMicroseconds(2); + digitalWrite(Trig, HIGH); + delayMicroseconds(30); + digitalWrite(Trig, LOW); + float Fdistance = pulseIn(Echo, HIGH); + Fdistance= Fdistance/58; + return (int)Fdistance; +} + +void setup() +{ + myservo.attach(3);// attach servo on pin 3 to servo object + Serial.begin(9600); + pinMode(Echo, INPUT); + pinMode(Trig, OUTPUT); + pinMode(in1,OUTPUT); + pinMode(in2,OUTPUT); + pinMode(in3,OUTPUT); + pinMode(in4,OUTPUT); + pinMode(ENA,OUTPUT); + pinMode(ENB,OUTPUT); + _mStop(); + lookAhead(); + #ifdef debug + debug(); + #endif +} + +int lookNScan(int pos) +{ + myservo.write(pos);//setservo position according to scaled value + delay(500); + return Distance_test(); +} + +void lookAhead() +{ + //setservo position according to scaled value + middleDistance = lookNScan(90); + #ifdef send + Serial.print("middleDistance="); + Serial.println(middleDistance); + #endif +} + +int lookOffRight() +{ + int offRight = lookNScan(65); + + #ifdef send + Serial.print("offRight="); + Serial.println(offRight); + #endif + return offRight; +} + +int lookOffLeft() +{ + int offLeft = lookNScan(115); + + #ifdef send + Serial.print("offLeft="); + Serial.println(offLeft); + #endif + return offLeft; +} + +void loop() +{ + getstr=Serial.read(); + if(getstr=='A') { + stateChange(); + } else if(state == AUTONOMOUS) { + autonomous(); + } else if(state == MANUAL) { + processCmd(); + } + +} + +void processCmd() +{ + int distance = Distance_test(); + Serial.println("Distance " + distance); + if(getstr=='f') + { + _mForward(); + } + else if(getstr=='b') + { + _mBack(); + delay(200); + } + else if(getstr=='l') + { + _mleft(); + delay(200); + } + else if(getstr=='r') + { + _mright(); + delay(200); + } + else if(getstr=='s') + { + _mStop(); + } +} + +void stateChange() +{ + if(state == MANUAL) + state = AUTONOMOUS; + else if(state == AUTONOMOUS) + state = MANUAL; +} + +bool scanArea() +{ + lookAhead(); + int r = lookOffRight(); + int l = lookOffLeft(); + + Serial.print("offRight="); + Serial.print(r); + Serial.print(" offLeft="); + Serial.println(l); + return middleDistance<=THRESHOLD || l<=THRESHOLD || r<=THRESHOLD; +} + +void autonomous() +{ + bool mightCollide = scanArea(); + if(mightCollide) + { + handleCollision(); + } + else + _mForward(); +} + +void handleCollision() +{ + _mStop(); + rightDistance = lookNScan(5); + delay(1000); + + #ifdef send + Serial.print("rightDistance="); + Serial.println(rightDistance); + #endif + + leftDistance = lookNScan(180); + delay(1000); + + #ifdef send + Serial.print("leftDistance="); + Serial.println(leftDistance); + #endif + + lookAhead(); + delay(500); + if(rightDistance>leftDistance) + { + _mBack(); + delay(500); + _mright(); + delay(500); + } + else if(rightDistance 0) + last = Serial.read(); + switch(last) + { + case 'l': + _mleft(); + break; + case 'r': + _mright(); + break; + case 'f': + _mForward(); + break; + case 'b': + _mBack(); + break; + case 'x': + Serial.print("Done Debugging!"); + return; + break; + } + delay(500); + _mStop(); + last = ' '; + } +} + From 473c0d770d47bd112212ecd06e606ad67e40f9f8 Mon Sep 17 00:00:00 2001 From: Clifton Craig Date: Thu, 7 Nov 2019 21:54:13 -0800 Subject: [PATCH 2/2] Adds Google repository for later version of Android Studio. (cherry picked from commit c566c1b1f8a1ecc395034fe9ed381df980c3b5cc) --- build.gradle | 4 +++- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index f89ba46..2cfc0ba 100644 --- a/build.gradle +++ b/build.gradle @@ -5,9 +5,10 @@ buildscript { jcenter{ url "http://jcenter.bintray.com/" } + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:3.5.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -19,6 +20,7 @@ allprojects { jcenter{ url "http://jcenter.bintray.com/" } + google() } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6e684e9..de7ae5c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Mar 26 11:49:31 PDT 2017 +#Thu Nov 07 21:48:14 PST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip