PCB and Schematic Design Assistance
0:39
Generating Arduino code.
Creating an Arduino sketch.
Clarifying pins for Arduino code.
Cpp
// === Pin Definitions === // Communications const int hc05Key = 7; // if used // HC-05 serial is on Serial1 if you use a 328P–Arduino Nano // (Arduino Nano only has one hardware UART, so we use SoftwareSerial if needed) #include const int btRxPin = 1; // D1 → HC-05 RX const int btTxPin = 0; // D0 ← HC-05 TX SoftwareSerial BT(btRxPin, btTxPin); // Ultrasonic sensors const int trigFront = 7; // D7 → HC-SR04 Front TRIG const int echoFront = 8; // D8 ← HC-SR04 Front ECHO // Bumper & status LED const int bumpPin = 13; // D13 → bumper switch const int ledPin = 12; // spare digital pin for LED_STAT (avoid sharing D13) // MOSFET gates (test as digital outputs) const int vacGate = 10; // D10 → Q1 gate const int brushGate = 11; // D11 → Q2 gate const int pumpGate = 12; // D12 → Q3/relay drive // Motor driver inputs const int m1In1 = 3; // D3 → L293D IN1 const int m1In2 = 5; // D5 → L293D IN2 const int m2In3 = 6; // D6 → L293D IN3 const int m2In4 = 9; // D9 → L293D IN4 // IR cliff sensors const int ir1Pin = A0; // A0 → TCRT5000 #1 const int ir2Pin = A1; // A1 → TCRT5000 #2 // ======================== void setup() { Serial.begin(9600); BT.begin(9600); pinMode(ledPin, OUTPUT); pinMode(bumpPin, INPUT_PULLUP); pinMode(trigFront, OUTPUT); pinMode(echoFront, INPUT); pinMode(vacGate, OUTPUT); pinMode(brushGate, OUTPUT); pinMode(pumpGate, OUTPUT); pinMode(m1In1, OUTPUT); pinMode(m1In2, OUTPUT); pinMode(m2In3, OUTPUT); pinMode(m2In4, OUTPUT); Serial.println(F("=== Hardware Test Start ===")); } void loop() { // 1) Blink status LED digitalWrite(ledPin, HIGH); delay(200); digitalWrite(ledPin, LOW); delay(200); // 2) Read bumper switch bool bump = !digitalRead(bumpPin); Serial.print(F("Bumper: ")); Serial.println(bump ? "PRESSED" : "OPEN"); // 3) Test HC-05 comms if (BT.available()) { Serial.print(F("BT RX: ")); Serial.write(BT.read()); } if (Serial.available()) { BT.write(Serial.read()); Serial.println(F("→ sent to HC-05")); } // 4) Trigger HC-SR04 Front long duration; digitalWrite(trigFront, LOW); delayMicroseconds(2); digitalWrite(trigFront, HIGH); delayMicroseconds(10); digitalWrite(trigFront, LOW); duration = pulseIn(echoFront, HIGH, 30000); float distCm = duration * 0.034 / 2; Serial.print(F("Front Dist: ")); Serial.print(distCm); Serial.println(F(" cm")); // 5) Read IR cliff sensors int ir1 = analogRead(ir1Pin); int ir2 = analogRead(ir2Pin); Serial.print(F("IR1: ")); Serial.print(ir1); Serial.print(F(" IR2: ")); Serial.println(ir2); // 6) Toggle MOSFETs & relay digitalWrite(vacGate, HIGH); delay(100); digitalWrite(vacGate, LOW); digitalWrite(brushGate, HIGH); delay(100); digitalWrite(brushGate, LOW); digitalWrite(pumpGate, HIGH); delay(100); digitalWrite(pumpGate, LOW); Serial.println(F("MOSFET/Relay pulses sent")); // 7) Test motors via L293D (short bursts) digitalWrite(m1In1, HIGH); digitalWrite(m1In2, LOW); digitalWrite(m2In3, HIGH); digitalWrite(m2In4, LOW); delay(200); digitalWrite(m1In1, LOW); digitalWrite(m1In2, LOW); digitalWrite(m2In3, LOW); digitalWrite(m2In4, LOW); Serial.println(F("Motors forward pulse")); delay(1000); // Wait before repeating }
Ready.
Reviews
Properties
Properties describe core aspects of the project.
Pricing & Availability
Distributor | Qty 1 |
|---|---|
Arrow | $18.83–$36.78 |
Digi-Key | $38.06–$42.39 |
LCSC | $38.21–$38.68 |
Mouser | $52.83–$72.79 |
TME | $11.70 |
Verical | $17.33–$25.31 |
Assets
Assets are files uploaded to this project which can be used in various ways.
Controls
Welcome 👋
Flux helps you build PCBs faster with an AI teammate!
Create your account to collaborate, stay updated, fork your own version, and get instant answers from our AI agent.