-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGoogleColabCode
More file actions
43 lines (41 loc) · 11.3 KB
/
GoogleColabCode
File metadata and controls
43 lines (41 loc) · 11.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
!pip install google-generativeai
import os
import google.generativeai as genai
from google.colab import userdata
API_KEY = userdata.get('Your_Secret_Name')
genai.configure(api_key=API_KEY)
# Create the model
# These can be altered to suite your preferences
generation_config = {
"temperature": 1,
"top_p": 0.95,
"top_k": 64,
"max_output_tokens": 8192,
"response_mime_type": "text/plain",
}
model = genai.GenerativeModel(
model_name="gemini-1.5-flash",
generation_config=generation_config,
)
prompt = input("What Arduino project would you like code for? Please provide all the materials you will be using.")
response = model.generate_content([
"input: Provide Arduino Code to test the DHT11 Temperature and Humidity sensor. My materials are an arduino, the DHT11 Sensor, a breadboard and jumper wires.",
"output: #include ",
"input: Provide Arduino Code to test an ultrasonic sensor. My materials are an arduino, the ultrasonic Sensor, a breadboard and jumper wires.",
"output: const int trigPin = 9;\nconst int echoPin = 10;\n\nfloat duration, distance;\n\nvoid setup() {\n pinMode(trigPin, OUTPUT);\n pinMode(echoPin, INPUT);\n Serial.begin(9600);\n}\n\nvoid loop() {\n digitalWrite(trigPin, LOW);\n delayMicroseconds(2);\n digitalWrite(trigPin, HIGH);\n delayMicroseconds(10);\n digitalWrite(trigPin, LOW);\n\n duration = pulseIn(echoPin, HIGH);\n distance = (duration*.0343)/2;\n Serial.print(\"Distance: \");\n Serial.println(distance);\n delay(100);\n}",
"input: Provide Arduino Code to test a project utilizing ultrasonic sensor. When the sensor detects any obstruction within 10cm, it should send a signal to the arduino to then turn on an LED. My materials are an arduino, the ultrasonic Sensor, a breadboard, an LED and jumper wires.",
"output: const int trigPin = 9;\nconst int echoPin = 10;\nconst int ledPin = 8;\nfloat duration, distance;\n\nvoid setup() {\n pinMode(trigPin, OUTPUT);\n pinMode(echoPin, INPUT);\n Serial.begin(9600);\n}\n\nvoid loop() {\n digitalWrite(trigPin, LOW);\n delayMicroseconds(2);\n digitalWrite(trigPin, HIGH);\n delayMicroseconds(10);\n digitalWrite(trigPin, LOW);\n\n duration = pulseIn(echoPin, HIGH);\n distance = (duration*.0343)/2;\n Serial.print(\"Distance: \");\n Serial.println(distance);\n while(distance<10){\n digitalWrite(ledPin, HIGH);\n digitalWrite(ledPin, LOW);\n }\n delay(100);\n}",
"input: Provide Arduino Code to test a line following robot. My materials are an arduino, Dual H-Bridge motor drivers L298, DC Motor, 12 V and Battery Holder, 18650 x 2.",
"output: int mr1=8; //motor right 1\nint mr2=9; //motor right 2\nint ml1=10; //motor left 1\nint ml2=11; //motor left 2\nint sr=6; //sensor right\nint sl=7; //sensor left\nint svr=0;\nint svl=0;\nint led=13;\nint enr=3; \nint enl=5;\n\nint vspeed=100; \nint tspeed=255;\nint tdelay=20;\n\nvoid setup()\n{\n pinMode(mr1,OUTPUT);\n pinMode(mr2,OUTPUT);\n pinMode(ml1,OUTPUT);\n pinMode(ml2,OUTPUT);\n pinMode(led,OUTPUT);\n pinMode(sr,INPUT);\n pinMode(sl,INPUT);\n \n delay(5000);\n}\n\nvoid loop()\n{\n svr=digitalRead(sr);\n svl=digitalRead(sl);\n \n if(svl==LOW && svr==LOW)\n {\n forward(); //maju\n }\n\n if(svl==HIGH && svr==LOW)\n {\n left(); //belok kiri\n }\n \n if(svl==LOW && svr==HIGH)\n { \n right(); //belok kanan\n }\n \n if(svl==HIGH && svr==HIGH)\n {\n stop(); //berhenti\n }\n}\n\nvoid forward()\n {\n digitalWrite(mr1,HIGH);\n digitalWrite(mr2,LOW);\n digitalWrite(ml1,HIGH);\n digitalWrite(ml2,LOW);\n analogWrite (enr,vspeed);\n analogWrite (enl,vspeed);\n } \n\nvoid backward()\n {\n digitalWrite(mr1,LOW);\n digitalWrite(mr2,HIGH);\n digitalWrite(ml1,LOW);\n digitalWrite(ml2,HIGH);\n analogWrite (enr,vspeed);\n analogWrite (enl,vspeed);\n }\n\nvoid right()\n {\n digitalWrite(mr1,LOW);\n digitalWrite(mr2,HIGH);\n digitalWrite(ml1,HIGH);\n digitalWrite(ml2,LOW);\n analogWrite (enr,tspeed);\n analogWrite (enl,tspeed);\n delay(tdelay);\n } \n\nvoid left()\n {\n digitalWrite(mr1,HIGH);\n digitalWrite(mr2,LOW);\n digitalWrite(ml1,LOW);\n digitalWrite(ml2,HIGH);\n analogWrite (enr,tspeed);\n analogWrite (enl,tspeed);\n delay(tdelay);\n} \n\nvoid stop()\n {\n analogWrite (enr,0);\n analogWrite (enl,0);\n }",
"input: Provide Arduino Code to test a line following robot that stops if there is any obstruction in front of it. My materials are an arduino, Dual H-Bridge motor drivers L298, DC Motor, 12 V and Battery Holder, 18650 x 2 and an ultrasonic sensor.",
"output: ```cpp\n// Motor Pins\nint mr1 = 8; // motor right 1\nint mr2 = 9; // motor right 2\nint ml1 = 10; // motor left 1\nint ml2 = 11; // motor left 2\n\n// Sensor Pins\nint sr = 6; // sensor right\nint sl = 7; // sensor left\nint svr = 0;\nint svl = 0;\n\n// Ultrasonic Sensor Pins\nconst int trigPin = 9; // Use any available digital pin\nconst int echoPin = 10; // Use any available digital pin\n\n// Other Pins\nint led = 13;\nint enr = 3; \nint enl = 5;\n\n// Motor Speed Control\nint vspeed = 100; \nint tspeed = 255;\nint tdelay = 20;\n\n// Ultrasonic Sensor Variables\nfloat duration, distance;\n\nvoid setup() {\n // Motor Pins\n pinMode(mr1, OUTPUT);\n pinMode(mr2, OUTPUT);\n pinMode(ml1, OUTPUT);\n pinMode(ml2, OUTPUT);\n\n // Sensor Pins\n pinMode(led, OUTPUT);\n pinMode(sr, INPUT);\n pinMode(sl, INPUT);\n \n // Ultrasonic Sensor Pins\n pinMode(trigPin, OUTPUT);\n pinMode(echoPin, INPUT);\n \n // Serial Communication\n Serial.begin(9600);\n \n // Wait for initialization\n delay(5000);\n}\n\nvoid loop() {\n // Read Sensor Data\n svr = digitalRead(sr);\n svl = digitalRead(sl);\n \n // Check for Obstacles\n readUltrasonic(); // Update distance measurement\n if (distance < 10) {\n stop(); // Stop if obstacle detected within 10 cm\n return; // Exit loop and wait for next cycle\n }\n\n // Line Following Logic\n if (svl == LOW && svr == LOW) {\n forward(); // Move forward\n }\n\n if (svl == HIGH && svr == LOW) {\n left(); // Turn left\n }\n\n if (svl == LOW && svr == HIGH) {\n right(); // Turn right\n }\n\n if (svl == HIGH && svr == HIGH) {\n stop(); // Stop if no line is detected\n }\n}\n\n// Functions for Motor Control\nvoid forward() {\n digitalWrite(mr1, HIGH);\n digitalWrite(mr2, LOW);\n digitalWrite(ml1, HIGH);\n digitalWrite(ml2, LOW);\n analogWrite(enr, vspeed);\n analogWrite(enl, vspeed);\n}\n\nvoid backward() {\n digitalWrite(mr1, LOW);\n digitalWrite(mr2, HIGH);\n digitalWrite(ml1, LOW);\n digitalWrite(ml2, HIGH);\n analogWrite(enr, vspeed);\n analogWrite(enl, vspeed);\n}\n\nvoid right() {\n digitalWrite(mr1, LOW);\n digitalWrite(mr2, HIGH);\n digitalWrite(ml1, HIGH);\n digitalWrite(ml2, LOW);\n analogWrite(enr, tspeed);\n analogWrite(enl, tspeed);\n delay(tdelay);\n}\n\nvoid left() {\n digitalWrite(mr1, HIGH);\n digitalWrite(mr2, LOW);\n digitalWrite(ml1, LOW);\n digitalWrite(ml2, HIGH);\n analogWrite(enr, tspeed);\n analogWrite(enl, tspeed);\n delay(tdelay);\n}\n\nvoid stop() {\n analogWrite(enr, 0);\n analogWrite(enl, 0);\n}\n\n// Function to Read Ultrasonic Sensor\nvoid readUltrasonic() {\n digitalWrite(trigPin, LOW);\n delayMicroseconds(2);\n digitalWrite(trigPin, HIGH);\n delayMicroseconds(10);\n digitalWrite(trigPin, LOW);\n\n duration = pulseIn(echoPin, HIGH);\n distance = (duration * 0.0343) / 2;\n Serial.print(\"Distance: \");\n Serial.println(distance);\n}\n```\n\n**Explanation:**\n\n1. **Motor Control:** The code defines pins for motor control and uses `digitalWrite` and `analogWrite` to control the direction and speed of the motors.\n2. **Line Following Sensors:** The code reads the line sensor data and uses it to determine the direction the robot should move.\n3. **Ultrasonic Sensor:** The code utilizes an ultrasonic sensor to detect obstacles. It measures the distance to the nearest object using the `pulseIn` function and calculates the distance.\n4. **Obstacle Detection:** The code checks if the distance measured by the ultrasonic sensor is less than 10 cm. If it is, the robot stops.\n5. **Robot Motion:** The code uses the line sensor data and the obstacle detection results to control the robot's motion (forward, left, right, stop).\n\n**Connect the components:**\n\n* **Motors:** Connect the motor driver's outputs to the motor pins.\n* **Line Sensors:** Connect the line sensors to the specified digital pins.\n* **Ultrasonic Sensor:** Connect the ultrasonic sensor's trigger and echo pins to the specified digital pins.\n* **LED:** Connect the LED to pin 13 for visual feedback.\n\n**Note:**\n\n* The code assumes you have a Dual H-Bridge motor driver L298 and two DC motors.\n* You may need to adjust the speed variables and line sensor threshold values to suit your specific robot setup.\n* The `delay` values can be adjusted to control the robot's turning speed.\n* Make sure you have correctly wired all the components before running the code.",
"input: Provide Arduino Code to test an HC-SR04 ultrasonic sensor. My materials are an arduino, the ultrasonic Sensor, a breadboard and jumper wires.",
"output: const int trigPin = 9;\nconst int echoPin = 10;\n\nfloat duration, distance;\n\nvoid setup() {\n pinMode(trigPin, OUTPUT);\n pinMode(echoPin, INPUT);\n Serial.begin(9600);\n}\n\nvoid loop() {\n digitalWrite(trigPin, LOW);\n delayMicroseconds(2);\n digitalWrite(trigPin, HIGH);\n delayMicroseconds(10);\n digitalWrite(trigPin, LOW);\n\n duration = pulseIn(echoPin, HIGH);\n distance = (duration*.0343)/2;\n Serial.print(\"Distance: \");\n Serial.println(distance);\n delay(100);\n}",
"input: Provide Arduino Code to setup the ESP8266 Module to achieve WIFI Integration. My components are the Arduino, breadboard, ESP8266 Breadboard, resistor kit, ESP8266 Adaptor, ESP8266 Module and jumper wires.",
"output: #include \"SoftwareSerial.h\" \n#define RX_PIN 2 \n #define TX_PIN 3 \nSoftwareSerial SerialEsp(RX_PIN, TX_PIN); \nvoid setup() { \t // Begin serial communication with the host computer \t Serial.begin(115200); \t Serial.println(\"Remember to to set Both NL & CR in the serial monitor.\"); \t // Begin serial communication with the ESP8266 module \t SerialEsp.begin(115200); \t Serial.println(\"ESP8266 module is ready\"); \n} \n void loop() { \t // We have available information to read \t \nif (SerialEsp.available()) { \t Serial.write(SerialEsp.read()); \t } \t // We have available information to write \t if (Serial.available()) { \t SerialEsp.write(Serial.read()); \t } \n}",
"input: Provide Arduino Code to test a soil moisture sensor. My materials are an Arduino, a soil moisture sensor, a breadboard and jumper wires.",
"output: // Moisture Sensor Arduino Code\n\n\n#define ledPin 6\n\n#define sensorPin A0\n\nvoid setup() {\n\n Serial.begin(9600);\n\n pinMode(ledPin, OUTPUT);\n\n digitalWrite(ledPin, LOW);\n\n}\n\nvoid loop() {\n\n Serial.print(\"Analog output: \");\n\n Serial.println(readSensor());\n\n delay(500)\n\n}\n// This function returns the analog data to calling function\nint readSensor() {\n\n int sensorValue = analogRead(sensorPin); // Read the analog value from sensor\n\n int outputValue = map(sensorValue, 0, 1023, 255, 0); // map the 10-bit data to 8-bit data\n\n analogWrite(ledPin, outputValue); // generate PWM signal\n\n return outputValue; // Return analog moisture value\n\n}",
"input: " + prompt,
"output: ",
])
print(response.text)