Hey,
ich bin gerade dabei mir einen Motor zu bauen, der mir den Vorhang aufzieht. Dafür habe ich einen 12V DC Wurm-Motor geholt.
Bei meinem "Board Setup" muss ich das Arduino UNO board über den verfügbaren Stromanschluss mit einer 9V E-Block Batterie versorgen und den Motor auch.
Da ich aber keine Batterien verschwenden will, suche ich nach einer Alternative, wie ich das ganze powern kann. Leider kenne ich mich damit nicht wirklich gut aus.
Ich habe schon versucht die 9V Batterie für das Arduino Board, durch einen AC/AC Adapter zu ersetzen, ging leider so schief, dass das Board jetzt nicht mehr funktioniert
Der Adapter hat als Output angegeben: 18VAC und 500mA.
In anderen Foren habe ich gelesen, dass das Arduino Board nur so viel Strom zieht wie es braucht, also 5V und es deshalb egal ist wie hoch der Output ist.
Oder war damit was anderes gemeint ?
(falls es eine Rolle spielt: der Input von dem Adapter war: 230-240VAC und 50Hz)
Worauf sollte ich achten wenn ich keine Batterien verwenden will? Wie gesagt, bin ich noch ein echter Noob und hab so gut wie keine Ahnung
Hier ist ein Bild von meinem Board Setup, falls es was nützt:
Und hier mein Code, wenn das auch eine Rolle spielt: (ich weiß dass das RTC überflüssig ist, wenn ich einen Lichtsensor habe und der Code so ist wie er ist. Ich war aber zu faul das zu ändern :P)
#include <DS1307RTC.h>
#include <TimeLib.h>
#include <Wire.h>
int lightValue; // light sensor
int lightValueCheck;
const int sunrise = 6;
const int sunset = 21;
const int lightTolerance = 640;
const unsigned long SECOND = 1000;
const unsigned long MINUTE = 60 * SECOND;
const int motorA = 5; // motor
const int motorB = 6;
const int motorSpeed = 3;
const int buttonPin = 2;
int buttonState = 0;
unsigned long timeNow;
unsigned long waitTimeCount;
bool blinds_up = false;
void setup() {
pinMode(motorA, OUTPUT);
pinMode(motorB, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
setSyncProvider(RTC.get);
adjustTime(5);
}
void printDigits(int digits) {
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
void digitalClockDisplay() {
Serial.print(" - Time: ");
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.println(" ");
}
void roll_up() {
Serial.print("--roll up--");
digitalWrite(motorA, HIGH);
digitalWrite(motorB, LOW);
analogWrite(motorSpeed, 150);
delay(1000);
analogWrite(motorSpeed, 200);
delay(1000);
analogWrite(motorSpeed, 250);
delay(25000);
analogWrite(motorSpeed, 0);
blinds_up = true;
Serial.println(" | set to: true");
}
void roll_down() {
Serial.print("--roll down--");
digitalWrite(motorA, LOW);
digitalWrite(motorB, HIGH);
analogWrite(motorSpeed, 150);
delay(1000);
analogWrite(motorSpeed, 200);
delay(1000);
analogWrite(motorSpeed, 250);
delay(10000);
analogWrite(motorSpeed, 0);
blinds_up = false;
Serial.println(" | set to: false");
}
void roll_on_button_trigger() {
buttonState = digitalRead(buttonPin);
//Serial.println(buttonState);
if (buttonState == 0) {
if (blinds_up == false) {
Serial.println("Button GATE 1");
Serial.println("--Button: roll up--");
roll_up();
}
else if (blinds_up == true) {
Serial.println("Button GATE 2");
Serial.println("--Button: roll down--");
roll_down();
}
}
}
void delay2() {
timeNow = millis();
// delay
while (millis() < (timeNow + 3 * MINUTE)) {
waitTimeCount = millis();
Serial.print("wait: ");
Serial.print((waitTimeCount - timeNow) / 1000);
Serial.print(" seconds/3 minutes");
lightValueCheck = analogRead(A0);
Serial.print(" - Light Value: ");
Serial.println(lightValueCheck);
roll_on_button_trigger();
delay(1000);
}
}
void delay1() {
timeNow = millis();
// delay
while (millis() < (timeNow + 2 * MINUTE)) {
waitTimeCount = millis();
Serial.print("wait: ");
Serial.print((waitTimeCount - timeNow) / 1000);
Serial.print(" seconds/2 minutes");
lightValueCheck = analogRead(A0);
Serial.print(" - Light Value: ");
Serial.println(lightValueCheck);
roll_on_button_trigger();
delay(1000);
}
}
void roll_on_light_trigger() {
timeNow = millis();
waitTimeCount = millis();
analogWrite(motorSpeed, 0);
lightValue = analogRead(A0);
Serial.print(" - Light Value 2: ");
Serial.println(lightValue);
if (lightValue < lightTolerance) { // bright
if (blinds_up == false) {
Serial.println("Check: false");
roll_up(); // blinds_up set: true
}
else {
Serial.println("Check passed");
}
while (lightValue < lightTolerance) {
digitalClockDisplay();
analogWrite(motorSpeed, 0);
delay1();
lightValueCheck = analogRead(A0);
Serial.print(" - Light Value Check: ");
Serial.println(lightValueCheck);
if (lightValueCheck >= lightTolerance) {
Serial.println("Light Value changed");
delay2();
}
lightValue = analogRead(A0);
Serial.print(" - Light Value 4: ");
Serial.println(lightValue);
}
}
if (lightValue >= lightTolerance) { // dark
if (blinds_up == true) {
Serial.println("Check: true");
roll_down(); // blinds_up set: false
}
else {
Serial.println("Check passed");
}
while (lightValue >= lightTolerance) {
digitalClockDisplay();
analogWrite(motorSpeed, 0);
delay1();
lightValueCheck = analogRead(A0);
Serial.print(" - Light Value Check: ");
Serial.println(lightValueCheck);
if (lightValueCheck < lightTolerance) {
Serial.println("Light Value changed");
delay2();
}
lightValue = analogRead(A0);
Serial.print(" - Light Value 4: ");
Serial.println(lightValue);
}
}
}
void loop() {
lightValue = analogRead(A0);
Serial.print(" - Light Value 1: ");
Serial.println(lightValue);
digitalClockDisplay();
// day
if ((hour() >= sunrise) && (hour() <= sunset)) {
Serial.println("D-Gate 1");
if (blinds_up == false) {
Serial.println("D-Gate 2");
roll_up(); // blinds_up = true
}
digitalClockDisplay();
while ((hour() >= sunrise) && (hour() <= sunset)) {
Serial.println("D-Gate 3");
digitalClockDisplay();
roll_on_light_trigger();
}
}
// night
if ((hour() <= sunrise) || (hour() >= sunset)) {
Serial.println("N-Gate 1");
if (blinds_up == true) {
Serial.println("N-Gate 2");
roll_down(); // blinds_up = false
}
digitalClockDisplay();
while ((hour() <= sunrise) || (hour() >= sunset)) {
Serial.println("N-Gate 3");
digitalClockDisplay();
roll_on_light_trigger();
}
}
}