Programm friert ein

Hallo,

Ich habe aktuell das Problem, dass sobald ich meinen Arduino an einen Akku (12V DC) anschließe nichts mehr funktioniert und mein Programm einfriert bzw. garnicht erst bearbeitet wird, der arduino hat jedoch Spannung. Wenn ich es am Laptop anschließe funktioniert auch soweit alles. Im Anhang habe ich meinen Code beigefügt.

Die Bilder folgen aufeinander, da ich keine 5 Bilder aufeinmal hochladen kann.


Vielen Dank im Voraus.

Lg

Bild 1

Aua…
Ich soll das also abtippen …

Nächstes mal bitte die Bilder Bilder sein lassen und stattdessen das Programm hier hochladen.

Ob eventuell im Programm ein Fehler besteht, da ich den arduino mit einem Akku nicht betreiben kann sondern nur mit dem usb Port meines Laptops. Sobald ich ihn an den Akku anschließe läuft das Programm nicht mehr…

#include <Servo.h>

const int echo1 = 5; // Ultrasonic 1 Signal Empfänger Pin
const int trig1 = 4; // Ultrasonic 1 Signal Sender Pin

int a[4]={0, 1, 2, 3};
int Ruecklicht[48]={48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95};
int Frontlicht[48]={0, 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, 44, 45, 46, 47};
int rfid = 0; // RFID variable
int value1 = 0; // variable RFID
const int relaisPin1 = 33; // Relay Motor ON
const int relaisPin2 = 36; // Relais Motor halt

int duration1 = 0; // Dauer für Schallweg Sensor 1
int distance1 = 0; // Distanz für Schallweg Sensor 1

#include <Adafruit_NeoPixel.h>
#ifdef AVR
#include <avr/power.h>
#endif
#define LED_PIN 10
#define LED_COUNT 95
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRBW + NEO_KHZ800);
#define DELAYVAL 500 // Time (in milliseconds) to pause between pixels
#define BRIGHTNESS 255 // Helligkeit der LED`s

Servo servo;

#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 53 // RFID PIN
#define RST_PIN 49 // RFID PIN
MFRC522 mfrc522(SS_PIN, RST_PIN);

void setup() {
pinMode(trig1, OUTPUT); // Ultrasonic 1 Signal Sender Pin
pinMode(echo1, INPUT); // Ultrasonic 1 Signal Empfänger Pin

pinMode(31, INPUT_PULLUP); // Raspberry Input Signal ON

pinMode(relaisPin1, OUTPUT); // Relais Motor
pinMode(relaisPin2, OUTPUT); // Relais Motor Halt
servo.attach(6); // Servomotor Pinbestimmung

Serial.begin(115200); // Baudrate

#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
    clock_prescale_set(clock_div_1);
    #endif

strip.begin();
strip.show();
strip.setBrightness(BRIGHTNESS);

digitalWrite (relaisPin1, LOW); // Aktivierung Relais
digitalWrite (relaisPin2, LOW); // Aktivierung Relais
SPI.begin();
mfrc522.PCD_Init();
}

void loop() {

int a = digitalRead (31);
Serial.println (a);
RFID ();
if (rfid >= 1)
{
LED();
if (a == HIGH)
{
digitalWrite(relaisPin1, LOW);

digitalWrite(relaisPin2, LOW);  

}
if (a == LOW)
{
Bremslicht();

ultrasonic(); // Start void Ultrasonic wenn Raspberrykamera erkennt
}
}
}

void ultrasonic () // Ultraschallsensoren starten
{

digitalWrite(trig1, HIGH); // Sender 1 ON
delay (15);
digitalWrite(trig1, LOW); // Sender 1 OFF

duration1 = pulseIn(echo1, HIGH); // Empfänger 1 ON
distance1 = (duration1/2) / 28.5; // Dauer Schallweg : 2 mit Temperaturkoeffizient
Serial.println(distance1); // Ergebnis der Berechnung Distanz Sensor 1

if (distance1 > 150)
{
digitalWrite(relaisPin1, LOW); // Wenn Distanz über 80 dann schaltet Relais 1 und 2 Motor aus

digitalWrite(relaisPin2, LOW); // Wenn Distanz unter 80 schaltet Motor Halt ein

}

if (distance1 >= 120 && distance1 <=150) // Distanz der Messungen definiert zwischen 60cm und 100cm
{
digitalWrite(relaisPin1, HIGH); // Wenn Distanz Richtig dann schaltet Relais 1 und 2 Motor Start

digitalWrite(relaisPin2, LOW); // Wenn Distanz über 60 schaltet Motor Halt Aus   

}
if ( distance1 < 80 ) // Distanz Messung definiert kleiner 40cm
{
digitalWrite(relaisPin2, HIGH); // Wenn Distanz unter 80 schaltet Motor Halt ein

int Winkel = map (distance1, 25, 80 ,90, 0); // Servowinkel definiert wenn 25 cm dann Servo 90 Grad und wenn 80 cm 0 Grad (zwischenstufen werden acuh geregelt)
servo.write(Winkel); // Ergebnis Winkel für Servo
}
if (distance1 < 120)
{
digitalWrite(relaisPin1, LOW); // Wenn Distanz über 80 dann schaltet Relais 1 und 2 Motor aus

}
if (distance1 >=80)
{
digitalWrite(relaisPin2, LOW);

}
}

void RFID()
{

if( ! mfrc522.PICC_IsNewCardPresent())
{
    return;
}
    if( ! mfrc522.PICC_ReadCardSerial())
    {
        return;
    }
    long code=0; // Als neue Variable fügen wir „code“ hinzu, unter welcher später die UID als zusammenhängende Zahl ausgegeben wird. Statt int benutzen wir jetzt den Zahlenbereich „long“, weil sich dann eine größere Zahl speichern lässt.
        for (byte i = 0; i < mfrc522.uid.size; i++)
        {
            code=((code+mfrc522.uid.uidByte[i])*10); // Nun werden wie auch vorher die vier Blöcke ausgelesen und in jedem Durchlauf wird der Code mit dem Faktor 10 „gestreckt“. (Eigentlich müsste man hier den Wert 1000 verwenden, jedoch würde die Zahl dann zu groß werden.
        }
        Serial.print("Die Kartennummer lautet:"); // Zum Schluss wird der Zahlencode (Man kann ihn nicht mehr als UID bezeichnen) ausgegeben.
        Serial.println(code);
            switch(code)
            {  
                case 1226020:
                    rfid = rfid +1;
                    value1 = 0;
                    break;
                case 2582490:
                    rfid = rfid +1;
                    value1 = 0;
                    break;
                case 2507190:
                    rfid = rfid +1;
                    value1 = 0;
                    break;
                case 1225010:
                    rfid = rfid +1;
                    value1 = 0;
                    break;
                case 1226720:
                    rfid = rfid +1;
                    value1 = 0;
                    break;
                case 2564010:
                    rfid = rfid +1;
                    value1 = 0;
                    break;
                case 900420:
                    rfid = rfid +1;
                    value1 = 0;
                    break;
                case 1975030:
                    rfid = rfid +1;
                    value1 = 0;
                    break;
                case 1935690:
                    rfid = rfid +1;
                    value1 = 0;
                    break;      
            }

}
void LED()
{
if (rfid == 1)
{
strip.setPixelColor(Ruecklicht, strip.Color(20, 0, 0, 0)); // Helligkeit und Farbe Ruecklicht
strip.setPixelColor(Frontlicht, strip.Color(255, 255, 255, 255)); // Helligkeit und Farbe Frontlicht
strip.show(); // Bringt Pixel zum leuchten
delay (1000);
rfid = rfid + 1;
}
}

void Bremslicht()
{
if (distance1 < 80)
{
strip.setPixelColor(Ruecklicht, strip.Color(100, 0, 0, 0)); // Helligkeit und Farbe Bremslicht
strip.show(); // Bringt Pixel zum leuchten
}
if (distance1 > 80)
{
strip.setPixelColor(Ruecklicht, strip.Color(20, 0, 0, 0)); // Wechsel auf Helligkeit von Bremslicht auf Rücklicht
strip.show(); // Bringt Pixel zum leuchten
}
}