Skip to content

Instantly share code, notes, and snippets.

@MisterDaniels
Last active April 8, 2021 03:18
Show Gist options
  • Save MisterDaniels/c5bade5b1a7587ed0acf9d7659ee4cf0 to your computer and use it in GitHub Desktop.
Save MisterDaniels/c5bade5b1a7587ed0acf9d7659ee4cf0 to your computer and use it in GitHub Desktop.
Code a Mars Landing - Arduino
int distanceThreshold = 0;
int cm = 0;
int light;
int buttonState = 0;
int buttonAction = 0;
int buttonAction2 = 0;
long readUltrasonicDistance(int triggerPin, int echoPin) {
pinMode(triggerPin, OUTPUT);
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
return pulseIn(echoPin, HIGH);
}
void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(8, OUTPUT);
pinMode(12, INPUT);
char message[] = "Hover calling earth";
String output = "";
for (char messageChar : message) {
output += GetMorseChar(toLowerCase(messageChar));
}
Serial.println(output);
}
void loop() {
// Button
buttonState = digitalRead(12);
// Light
light = analogRead(5);
// Sensor
distanceThreshold = 30;
cm = 0.01723 * readUltrasonicDistance(7, 6);
Serial.print("Distance: ");
Serial.print(cm);
Serial.print(cm);
Serial.print(" / ");
Serial.print("Clarity: ");
Serial.println(light);
if (cm > distanceThreshold) {
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
if (cm < 20) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
}
if (cm < 10) {
tone(8, 68583572, 2000);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
}
if (buttonAction == 1 && buttonAction2 == 0) {
buttonState = 1 - buttonState;
delay(20);
}
buttonAction2 = buttonAction;
if(buttonState == 1) {
tone(8, 68583572, 2000);
} else {
noTone(8);
}
delay(10);
}
String GetMorseChar(char tmpChar) {
switch (tmpChar) {
case 'a':
return ".-";
case 'b':
return "-...";
case 'c':
return "-.-.";
case 'd':
return "-..";
case 'e':
return ".";
case 'f':
return "..-.";
case 'g':
return "--.";
case 'h':
return "....";
case 'i':
return "..";
case 'j':
return ".---";
case 'k':
return "-.-";
case 'l':
return ".-..";
case 'm':
return "--";
case 'n':
return "-.";
case 'o':
return "---";
case 'p':
return ".--.";
case 'q':
return "--.-";
case 'r':
return ".-.";
case 's':
return "...";
case 't':
return "-";
case 'u':
return "..-";
case 'v':
return "...-";
case 'w':
return ".--";
case 'x':
return "-..-";
case 'y':
return "-.--";
case 'z':
return "--..";
default:
return " ";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment