Arduino – die neusten Beiträge

Arduino steuerung mit millis?

Hallo liebe comunety,

Habe ein Programm zur Rolladensteuerung geschrieben leider weißt das Programm noch Fehler auf und ich kann diese nicht finden.

Hab das erste mal mit millis programmiert und nicht mit delay.

Bitte um nachsicht ich versuche noch zu lernen.

const int buttonPin  = 7;
     int RolloAb    = 3;
     int RolloAuf   = 4;
     int Hupe       = 5;
     int Lampe      = 6;
     int myTimer    = 0;
     int myTimer2   = 0;
     int myTimer3   = 0;
     long myTimeout = 20000;
     long myTimeout2 = 20000;
     long myTimeout3 = 2000;
void setup() {
 pinMode (buttonPin, INPUT_PULLUP);
 pinMode (RolloAb,  OUTPUT);
 pinMode (RolloAuf, OUTPUT);
 pinMode (Hupe,     OUTPUT);
 pinMode (Lampe,    OUTPUT);
}
void loop()                            {
 digitalRead(buttonPin);
 delay(20);
 if(buttonPin == HIGH);               {
   myTimer2 = millis();
   digitalWrite(Lampe, HIGH);
  if(millis() < myTimer + myTimeout)  {
   digitalWrite(RolloAb, HIGH);
  if(millis() < myTimer3 + myTimeout3) {
    myTimer3 = millis();
    if(Hupe == LOW)                   {
    digitalWrite(Hupe,HIGH);
 }
   if(Hupe == HIGH)                   {
   digitalWrite(Hupe,LOW);
 }
 }
 }
 }
 if(buttonPin == LOW);                {
   myTimer = millis();
  if(millis() < myTimer2 + myTimeout2) {
   digitalWrite(RolloAuf, HIGH);
  }
  }
}

Zum Ablauf des Programmes:

bei betätigung des schalters soll der Rollo nach unten fahren.

Zeitgleich soll eine Hupe schalten und ein getaktetes akustisches Signal ausgeben.

Die Warnleuchte soll auch während der fahrt nach unten Läuchten.

Beim rücksetzen des Tasters soll der Rollo wieder noch oben fahren dabei sind Lampe und Hupe NICHT aktiv.

Danke für Ihre Hilfe

Mit freundlichen Grüßen

Paul

Computer, Schule, Technik, programmieren, Arduino

Wie kan man einen Arduino Sketch mit mit einen taster veränderen?

habe meine frage im Sktech gestellt.

void setup() {
 // put your setup code here, to run once:
pinMode (1,OUTPUT);
pinMode (2,OUTPUT);
pinMode (3,OUTPUT);
pinMode (4,OUTPUT);
pinMode (5,OUTPUT);
pinMode (6,OUTPUT);
pinMode (7,OUTPUT);
}
void loop() {
 // put your main code here, to run repeatedly 
digitalWrite (1,HIGH);
digitalWrite (2,LOW);
digitalWrite (3,LOW);
digitalWrite (4,LOW);
digitalWrite (5,LOW);
digitalWrite (6,LOW);
digitalWrite (7,LOW);
delay (2000);// wen der taster gedrückt ist soll die led auf pin 2 sofort
umspringen soll
digitalWrite (1,LOW);
digitalWrite (2,HIGH);
digitalWrite (3,LOW);
digitalWrite (4,LOW);
digitalWrite (5,LOW);
digitalWrite (6,LOW);
digitalWrite (7,LOW);
delay (2000);
digitalWrite (1,LOW);
digitalWrite (2,LOW);
digitalWrite (3,HIGH);
digitalWrite (4,LOW);
digitalWrite (5,LOW);
digitalWrite (6,LOW);
digitalWrite (7,LOW);
delay (2000);
digitalWrite (1,LOW);
digitalWrite (2,LOW);
digitalWrite (3,LOW);
digitalWrite (4,HIGH);
digitalWrite (5,LOW);
digitalWrite (6,LOW);
digitalWrite (7,LOW);
delay (2000);
digitalWrite (1,LOW);
digitalWrite (2,LOW);
digitalWrite (3,LOW);
digitalWrite (4,LOW);
digitalWrite (5,HIGH);
digitalWrite (6,LOW);
digitalWrite (7,LOW);
delay (2000);
digitalWrite (1,LOW);
digitalWrite (2,LOW);
digitalWrite (3,LOW);
digitalWrite (4,LOW);
digitalWrite (5,LOW);
digitalWrite (6,HIGH);
digitalWrite (7,LOW);
delay (2000);
digitalWrite (1,LOW);
digitalWrite (2,LOW);
digitalWrite (3,LOW);
digitalWrite (4,LOW);
digitalWrite (5,LOW);
digitalWrite (6,LOW);
digitalWrite (7,HIGH);
delay (2000);}
Computer, Technik, Arduino

Arduino - Kein auslesen der Daten beim Ir-Empfänger?

Ich haben ein kleines Problem beim Auslesen des Ir-Empfänges am Arduino. Ich habe nähmlich als nächstes Projekt vor, den Arduino über eine Infrarotfernbedinung ferzusteuern. Um dies jedoch machen zu können, muss ich natürlich erst einmal die Werte auslesen, welche von der Fernbedinung kommen. Das Problem jedoch dabei ist, dass mir im Seriellen Monitor bei der Ausgabe der Wert 0 angezeigt wird (bei jeder Taste).

Ich sehe jedoch dass der Ir-Empfänger reagiert und verarbeitet. Zudem sind sowohl Hardware als auch Software richtig:

#include <IRremote.h>

int RECV_PIN =7;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()

{

 Serial.begin(9600);

 irrecv.enableIRIn(); // Start the receiver

}

void loop() {

 if (irrecv.decode()) {

  Serial.println(results.value, HEX);

  irrecv.resume();

 }

}

Das seltsame begann schon für mich, als ich in dem if-statement das &results entfernen musstem weil der Serielle Monitor mir sonst folgendes anzeigte:

Aber noch einmal zurück zu auslesen. An der Hardware kann es auch nicht liegen. Ich hatte sowahl den Arduino, als auch den Infrarot-Sensor ausgetauscht. Ich habe auch schon versucht den Ir-Empfänger am AnalogPin anzuschließen, jedoch mit dem selben resultat. Auch die Fernbedinungen untereinander habe ich ausgetauscht.

Würde micht über Antworten freuen

Ps. Ich nutzte einen ArduinoUno R3

Mein Ir-Empfänger: https://www.amazon.de/ANGEEK-Infrarot-IR-Empf%C3%A4nger-Infrarot-Receiver/dp/B07RMDR9LL/ref=sr_1_5?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=POLRK63VNK91&dchild=1&keywords=arduino+ir+empf%C3%A4nger&qid=1612701939&sprefix=arduino+ir+%2Caps%2C190&sr=8-5

Bild zum Beitrag
Computer, Technik, Hardware, programmieren, Arduino, Technologie

Arduino Lauflicht Programmierung?

Hallo ich bin Neu hier und auch neu in der Materie Arduino. Ich hoffe hier kann mir einer helfen- Ich möchte ein Lauflicht (wie auf Video:https://www.instagram.com/p/CHOOV51Fj_T/?igshid=tudc3clo118m) in Kaltweiss für zwei Led Bänder programmieren die Parallel zueinander anlaufen sollen. Dazu habe ich eine gewisse Schaltung aufgebaut (siehe Bild) die via Pulldown-Widerstand angeschalten bzw. ausgeschalten werden sollen. Zum beigefügten Bild kurz eine Erklärung meiner Vorstellung:

Über den 230V Funkschalter wird ein Funkaktor angesteuert der wiederum die Primärseite des 5V Trafos an bzw. ausschalten kann. Über die Sekundärseite werden die Led-Strips bestromt sowie der Digitial Port 11 der wiederum einen "Pulldown-Widerstand" von 10kOhm vorgeschalten hat und als An bzw. Ausschalter dem Arduino einen Digitalenschalter aufzeigen soll, damit dieser weiss wann er die Led-Strips zu schalten hat. Die Led sollen dann lediglich in einem Kaltweiss Ton als Lauflicht (wie im Video) parallel zu einander loslaufen. Es sind zwei led streifen mit jeweils 165LED.

Der Arduino UNO selbst ist über ein seperates Netzteil dauerbestromt. Soweit in der Theorie...
Jetzt brauche ich allerdings eure Hilfe, denn den Skript dafür zu programmieren traue ich mir absolut nicht zu, da ich dazu leider absolut zu wenig Ahnung davon habe. Ich hoffe einer von Euch kann mir helfen und dazu einen passenden Skript schreiben und Ihn mir hier zur Verfügung stellen. Freue mich für jede Hilfreiche Antwort. Liebe Grüße

Bild zum Beitrag
Computer, Technik, programmieren, Arduino, LED, Technologie, Arduino Uno, Spiele und Gaming

Wie kann ich diese delays mit millis ersetzen?

Hallo, ich versuche mir gerade die millis Funktion beizubringen. Zurzeit verstehe ich wie man Blink without delay an der internen LED programmiert, aber ich blicke nicht ganz durch, wie ich mein ganzes Programm mit millis ersetze. Ich möchte nämlich, dass sich zwei Motoren abhängig von den Messwerten eines Ultraschallsensors drehen. Wenn die Distanz >=5 ist, sollen sie sich beide vorwärts drehen ansonsten für 3 Sekunden rückwärts (Im Code sieht es nur so komisch aus mit FORWARD und BACKWARD, weil ich die Anschlüsse bei einem Motor falsch angelötet habe). Ich würde mich sehr über eine Antwort freuen :)

#include <AFMotor.h>
#include <Servo.h>


//AF_DCMotor motor1(1);
//AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);


int trigPin = 9;
int echoPin = 10;


unsigned long currentmillis;
unsigned long previousmillis;
const long interval_1 = 1000;
const long interval_2 = 10;


void setup() {
  Serial.begin(9600); 
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);


//  motor1.setSpeed(250);
//  motor1.run(RELEASE);
//  motor2.setSpeed(250);
//  motor2.run(RELEASE);
  motor3.setSpeed(250);
  motor3.run(RELEASE);
  motor4.setSpeed(250);
  motor4.run(RELEASE);


}


void loop() {
  //Ultraschallsensor
  currentmillis = millis();
  long duration, distance;


  if (currentmillis - previousmillis >= interval_1){
  digitalWrite(trigPin,HIGH);
  //delay(1000);
     previousmillis = currentmillis;
  }
  if (currentmillis - previousmillis >= interval_2){
  digitalWrite(trigPin, LOW);
  duration=pulseIn(echoPin, HIGH);
  distance =(duration/2)/29.1;
  Serial.print(distance);
  Serial.println("CM");
  //delay (10);
     previousmillis = currentmillis;
  }


//Motoren


//vorwärts
if (distance >=5){
  motor3.run(FORWARD);
  motor4.run(BACKWARD);
}
//rückwärts
if (currentmillis - previousmillis <= interval_1){
  if (distance <=5) {
  motor3.run(BACKWARD);
  motor4.run(FORWARD);
  //delay(3000);
    previousmillis = currentmillis;
  }
}
Arduino, Arduino Uno

Kann man die Arduino Software auch für ähnliche Mainboards verwenden?

Ich habe einen 3D Drucker mit einem Atmel Mainboard. Die Firmware kann ich flashen und ihre Version ändern, das habe ich schon öfters getan.

Der Arduino Mega 2560 kann man dann als 3D Drucker Mainboard verwenden und die Firmware selbst, ziemlich unkompliziert programmieren.

Meine Frage ist, ob ich bei meinem Mainboard mit Atmel Prozessor, das ja eigentlich äquivalent wie der Arduino Mega ist, Auf diese Art die Achsen steuern kann, sowie alle nötigen Sensoren, sowie die Nozzle ansteuern kann.

Die Schnittstellen sind auf dem Mainboard gekennzeichnet und theoretisch sollte ich ja diese alle ansteuern können, oder? Wenn dies der Fall wäre, könnte ich ja mithilfe des Arduinos eine eigene Firmware auf den Drucker laden (natürlich selbst programmiert. Ich kenne mich bereits aus mit dem Programmieren von Arduinos.) Meine Drucker Firmware hat gewisse Hürden, die mich zwingen das Hauseigene Filament zu verwenden. Da die Anschlüsse auf dem Printer nicht alles Standartanschlüsse sind, möchte ich bestenfalls das Originale Mainboard behalten.

Ich habe es selbst noch nicht ausprobiert, da ich unsicher war. Kann mir jemand bestätigen, dass dies möglich ist? Und muss ich noch etwas bestimmtes beachten?

LG Lubi

Bild zum Beitrag
Computer, Software, Technik, IT, programmieren, Firmware, Arduino, Informatik, Technologie, 3D-Drucker, Spiele und Gaming

Meistgelesene Beiträge zum Thema Arduino