arduino lab kodu
-
int aPin = 22; int bPin = 23; int cPin = 24; int dPin = 25; int ePin = 26; int fPin = 27; int gPin = 28; int GND[] = {33, 34, 35, 36}; const int buttons[] = {38, 39, 40, 41}; // SW0, SW1, SW2, SW3 const int leds[] = {43, 44, 45, 46}; // LEDs for Floor 1 to Floor 4 int oldFloor = 1; bool buttonPressed[4] = {false, false, false, false}; // Button states void setup() { Serial.begin(115200); int pins[] = {aPin, bPin, cPin, dPin, ePin, fPin, gPin}; for (int i = 0; i < 7; i++) { pinMode(pins[i], OUTPUT); } for (int i = 0; i < 4; i++) { pinMode(GND[i], OUTPUT); pinMode(leds[i], OUTPUT); pinMode(buttons[i], INPUT_PULLUP); // Buttons with pull-up resistors digitalWrite(GND[i], LOW); } } void clearDisplay() { int pins[] = {aPin, bPin, cPin, dPin, ePin, fPin, gPin}; for (int i = 0; i < 7; i++) { digitalWrite(pins[i], LOW); } for (int i = 0; i < 4; i++) { digitalWrite(GND[i], LOW); } } void clearAllLEDs() { for (int i = 0; i < 4; i++) { digitalWrite(leds[i], LOW); // Turn off all LEDs } } void displayFloor(int floor) { clearDisplay(); clearAllLEDs(); // Turn off all LEDs before lighting the current one digitalWrite(GND[0], HIGH); // Activate the first segment switch (floor) { case 1: digitalWrite(bPin, HIGH); digitalWrite(cPin, HIGH); digitalWrite(leds[0], HIGH); // Light up LED for Floor 1 break; case 2: digitalWrite(aPin, HIGH); digitalWrite(bPin, HIGH); digitalWrite(gPin, HIGH); digitalWrite(ePin, HIGH); digitalWrite(dPin, HIGH); digitalWrite(leds[1], HIGH); // Light up LED for Floor 2 break; case 3: digitalWrite(aPin, HIGH); digitalWrite(bPin, HIGH); digitalWrite(gPin, HIGH); digitalWrite(cPin, HIGH); digitalWrite(dPin, HIGH); digitalWrite(leds[2], HIGH); // Light up LED for Floor 3 break; case 4: digitalWrite(fPin, HIGH); digitalWrite(gPin, HIGH); digitalWrite(bPin, HIGH); digitalWrite(cPin, HIGH); digitalWrite(leds[3], HIGH); // Light up LED for Floor 4 break; } oldFloor = floor; } void moveToFloor(int targetFloor) { int step = (targetFloor > oldFloor) ? 1 : -1; // Move up or down while (oldFloor != targetFloor) { oldFloor += step; // Move step by step displayFloor(oldFloor); // Display the current floor delay(1000); // Simulate travel time between floors } } void loop() { // Check for button presses and show the corresponding floor for (int i = 0; i < 4; i++) { if (digitalRead(buttons[i]) == LOW && !buttonPressed[i]) { // Button is pressed moveToFloor(i + 1); // Move to the selected floor buttonPressed[i] = true; // Mark the button as pressed delay(500); // Debouncing for 500 ms } else if (digitalRead(buttons[i]) == HIGH) { buttonPressed[i] = false; // Button is released } } }
-
Ardunio lab ikinci soru ```
int aPin = 22;
int bPin = 23;
int cPin = 24;
int dPin = 25;
int ePin = 26;
int fPin = 27;
int gPin = 28;
int GND[] = {33, 34, 35, 36};const int buttons[] = {38, 39, 40, 41}; // SW0, SW1, SW2, SW3
const int leds[] = {43, 44, 45, 46}; // LEDs for Floor 1 to Floor 4int oldFloor = 1;
bool buttonPressed[4] = {false, false, false, false}; // Button states
unsigned long lastMoveTime = 0; // For tracking random movement time
unsigned long randomDelay = 3000; // 3 seconds delay for random movementvoid setup() {
Serial.begin(115200);int pins[] = {aPin, bPin, cPin, dPin, ePin, fPin, gPin};
for (int i = 0; i < 7; i++) {
pinMode(pins[i], OUTPUT);
}
for (int i = 0; i < 4; i++) {
pinMode(GND[i], OUTPUT);
pinMode(leds[i], OUTPUT);
pinMode(buttons[i], INPUT_PULLUP); // Buttons with pull-up resistors
digitalWrite(GND[i], LOW);
}
}void clearDisplay() {
int pins[] = {aPin, bPin, cPin, dPin, ePin, fPin, gPin};
for (int i = 0; i < 7; i++) {
digitalWrite(pins[i], LOW);
}
for (int i = 0; i < 4; i++) {
digitalWrite(GND[i], LOW);
}
}void clearAllLEDs() {
for (int i = 0; i < 4; i++) {
digitalWrite(leds[i], LOW); // Turn off all LEDs
}
}void displayFloor(int floor) {
clearDisplay();
clearAllLEDs(); // Turn off all LEDs before lighting the current onedigitalWrite(GND[0], HIGH); // Activate the first segment
switch (floor) {
case 1:
digitalWrite(bPin, HIGH);
digitalWrite(cPin, HIGH);
digitalWrite(leds[0], HIGH); // Light up LED for Floor 1
break;
case 2:
digitalWrite(aPin, HIGH);
digitalWrite(bPin, HIGH);
digitalWrite(gPin, HIGH);
digitalWrite(ePin, HIGH);
digitalWrite(dPin, HIGH);
digitalWrite(leds[1], HIGH); // Light up LED for Floor 2
break;
case 3:
digitalWrite(aPin, HIGH);
digitalWrite(bPin, HIGH);
digitalWrite(gPin, HIGH);
digitalWrite(cPin, HIGH);
digitalWrite(dPin, HIGH);
digitalWrite(leds[2], HIGH); // Light up LED for Floor 3
break;
case 4:
digitalWrite(fPin, HIGH);
digitalWrite(gPin, HIGH);
digitalWrite(bPin, HIGH);
digitalWrite(cPin, HIGH);
digitalWrite(leds[3], HIGH); // Light up LED for Floor 4
break;
}
oldFloor = floor;
}void moveToFloor(int targetFloor) {
int step = (targetFloor > oldFloor) ? 1 : -1; // Move up or downwhile (oldFloor != targetFloor) {
oldFloor += step; // Move step by step
displayFloor(oldFloor); // Display the current floor
delay(1000); // Simulate travel time between floors
}
delay(1000); // Wait for 1 second when reaching the target floor before moving randomly again
}void randomMove() {
int targetFloor = random(1, 5); // Generate random number between 1 and 4
moveToFloor(targetFloor); // Move to the randomly selected floor
}void loop() {
unsigned long currentMillis = millis();// Check if it's time for random movement
if (currentMillis - lastMoveTime >= randomDelay) {
randomMove(); // Move randomly
lastMoveTime = currentMillis; // Update the last move time
}// Button Press Handling: Move to the requested floor
for (int i = 0; i < 4; i++) {
if (digitalRead(buttons[i]) == LOW && !buttonPressed[i]) { // Button is pressed
moveToFloor(i + 1); // Move to the selected floor
buttonPressed[i] = true; // Mark the button as pressed
delay(500); // Debouncing for 500 ms
} else if (digitalRead(buttons[i]) == HIGH) {
buttonPressed[i] = false; // Button is released
}
}
}