How to move Taskbar to top or side on Windows 11
To move the Taskbar to the top of the screen with ExplorerPatcher, use these steps:
[mai mult...]Soluții pentru problemele tale IT
To move the Taskbar to the top of the screen with ExplorerPatcher, use these steps:
[mai mult...]How the Soil Moisture Sensor Works
Resistive Sensor
Uses two metal probes to measure electrical resistance. Wet soil has lower resistance, while dry soil has higher resistance.
Capacitive Sensor
Measures changes in soil capacitance and has no exposed metal parts. It provides more stable and long-lasting performance.
Both sensors provide an analog output that Arduino reads.
Wiring the Soil Moisture Sensor
Soil Sensor → Arduino VCC → 5V GND → GND AO → A0
The digital output (DO) pin is optional and can be used with a preset threshold.
Arduino Code (Basic Reading)
int soilPin = A0;
int soilValue = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
soilValue = analogRead(soilPin);
Serial.print("Soil Moisture Value: ");
Serial.println(soilValue);
delay(1000);
}
Understanding Soil Moisture Values
| Sensor Value | Soil Condition |
|---|---|
| 0 – 300 | Very Wet |
| 300 – 600 | Moist |
| 600 – 900 | Dry |
| 900 – 1023 | Very Dry |
Values may vary depending on soil type. Always calibrate with dry and wet soil.
Improved Code with Moisture Status
int soilPin = A0;
int soilValue = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
soilValue = analogRead(soilPin);
Serial.print("Soil Moisture: ");
Serial.print(soilValue);
if (soilValue < 300) {
Serial.println(" - WET");
}
else if (soilValue < 600) {
Serial.println(" - MOIST");
}
else {
Serial.println(" - DRY");
}
delay(1000);
}
Testing the Sensor
Wet soil produces lower values, while dry soil produces higher values.
Troubleshooting
Optional Upgrades
Daca se respecta anumite “conditii”, desi dispozitivul este sau a fost perfect functional fara a avea disfunctionalitati de natura hardware, putem observa ca in anumite aplicatii si/sau motoare grafice texturile/imaginile/loading bars fie sunt albe sau incarca lent, fie prezinta tipare de culori la intamplare.
Desigur, sunt posibile si alte simptome dar cele de mai sus au fost observate si remediate cu metoda prezentata in continuare.
[mai mult...]Required Components
| Component | Quantity | Description |
|---|---|---|
| Arduino Uno / Nano / Mega | 1 | Main controller |
| Fingerprint Sensor (R307 / ZFM-20 / Adafruit) | 1 | Biometric identification |
| 16×2 LCD with I2C Module | 1 | Display user messages |
| 12V Solenoid Lock | 1 | Door/box locking mechanism |
| 5V Relay Module | 1 | Controls solenoid lock |
| 12V Power Supply | 1 | Powers solenoid |
| Jumper Wires | – | Connections |
The fingerprint sensor scans the user’s finger. Arduino checks if the fingerprint matches a stored ID. If it matches, the relay is activated and unlocks the solenoid lock. The LCD shows:
Fingerprint Sensor → Arduino
VCC → 5V GND → GND TX → D2 RX → D3
I2C LCD → Arduino
VCC → 5V GND → GND SDA → A4 SCL → A5
Relay Module → Arduino
IN → D8 VCC → 5V GND → GND
Solenoid Lock Power Wiring
12V+ → COM on Relay NO → Solenoid + Solenoid - → 12V -
IMPORTANT: Use a diode (1N4007) across solenoid terminals to prevent voltage spikes.
Arduino Code (Copy & Paste)
This code controls the fingerprint module, LCD display, and solenoid lock.
#include <Adafruit_Fingerprint.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
SoftwareSerial fingerSerial(2, 3); // RX, TX
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&fingerSerial);
LiquidCrystal_I2C lcd(0x27, 16, 2);
int relayPin = 8;
void setup() {
lcd.init();
lcd.backlight();
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW); // lock OFF at start
lcd.setCursor(0, 0);
lcd.print("Fingerprint");
lcd.setCursor(0, 1);
lcd.print("Access System");
delay(2000);
lcd.clear();
finger.begin(57600);
if (finger.verifyPassword()) {
lcd.print("Sensor Ready");
} else {
lcd.print("Sensor Error");
while (1);
}
delay(2000);
lcd.clear();
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("Place Finger...");
lcd.setCursor(0, 1);
lcd.print(" ");
int result = getFingerprintID();
if (result >= 0) {
lcd.clear();
lcd.print("Access Granted");
unlockDoor();
} else if (result == -1) {
lcd.clear();
lcd.print("Access Denied");
delay(1500);
}
lcd.clear();
}
int getFingerprintID() {
finger.getImage();
if (finger.image2Tz() != FINGERPRINT_OK) return -1;
if (finger.fingerSearch() != FINGERPRINT_OK) return -1;
return finger.fingerID; // valid ID returned
}
void unlockDoor() {
digitalWrite(relayPin, HIGH); // open lock
delay(3000); // unlock duration
digitalWrite(relayPin, LOW); // lock again
}
You must add fingerprints before using the system.
Fingerprint is now stored.
LCD Display Messages
| Event | Message |
|---|---|
| Startup | Fingerprint Access System |
| Ready | Sensor Ready |
| Waiting | Place Finger… |
| Match | Access Granted |
| No Match | Access Denied |
Troubleshooting