Forum: Mikrocontroller und Digitale Elektronik CNC-Arduino mit Arduino UNO kommunizieren lassen


von Baril (Gast)


Lesenswert?

Hallo Leute,

ich habe mir eine CNC-Graviermaschine gekauft und betreibe diese auch 
schon fleißig. Jetzt möchte ich einen weiteren Schritt gehen und während 
des Betriebes der CNC-Maschine (ArduinoClon) eine Kommunikation zu einem 
anderen Arduino UNO aufbauen. Das heißt ich möchte zum Beispiel am Ende 
des Programmzyklus (G-Code) eine Meldung an den Arduino UNO von dem 
CNC-Arduino bekommen. Und mit dieser Meldung dann einen Prozess in dem 
Arduino UNO auslösen.

Weiß einer von euch wie sowas geht?

Grüße
Baril

: Verschoben durch Moderator
von sven (Gast)


Lesenswert?

Werte doch einfach das "Coolant enable" (Pin A3) Signal aus mit deinem 
UNO, welches Du per GCode am Arduino-Clon setzt (ich vermute mal GRBL).

GRBL: https://github.com/gnea/grbl/wiki/Connecting-Grbl
GCode: http://linuxcnc.org/docs/html/gcode/m-code.html#mcode:m7-m8-m9

von Baril B. (marius1cnc)


Lesenswert?

Hallo, und danke für deine Antwort. Wie soll das funktionieren? Ich 
schließe den extra arduino an den PIN A3 und frage dann per Programm die 
Werte ab?

Grüße Baril

von Paul A. (wandkletterer)


Lesenswert?

Jo, du prüfst ob an oder aus (High / Low).

von Baril B. (marius1cnc)


Lesenswert?

Hallo nochmal,

also ich hab jetzt den enable coolant mit dem arduino verbunden und GND 
von CNC-shield und arduino GND verbunden. Dann habe ich die Abfrage 
gestartet mit...

int inPin = 3;              // Input pin für Arduino
int reading;               // Wert des Eingangs
int previous = LOW;    // Vorheiger Wert des Eingangs

// folgende Variablen müssen vom Typo unsigned long sein da millis() 
disen Variablentyp liefert.

unsigned long time = 0;         // letzter Zeitwert bei dem der 
Ausgangzustand wechselte.
unsigned long debounce = 200;   // Entprellzeit

void setup()
{
 pinMode(inPin, INPUT);
 pinMode(outPin, OUTPUT);
}

void loop()
{
 reading = digitalRead(inPin);

                   // Beim Wechsel des Eingangs von LOW zu HIGH und nach 
der Entprellzeit:
 if (reading == HIGH && previous == LOW && millis() - time > debounce) {
   time = millis();
   Tue irgendwas
   }

                   // Beim Wechsel des Eingangs von HIGH zu LOW und nach 
der Entprellzeit:
 if (reading == LOW && previous == HIGH && millis() - time > debounce) {
   time = millis();
   Tue irgendwas anderes
   }
 previous = reading;
}

Funktioniert aber nicht kann mir einer auf die Sprünge helfen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.