Robot Arm spielt Schach (Arduino Mini 05)

Hallo liebe Foristen,

ich möchte mich, aber auch mein Projekt AdeTeK hier vorstellen. Nach etlichen Jahren Pause bin ich auf die Arduinos gestoßen, und was dabei herausgekommen ist, könnt ihr hier auf YouTube sehen. https://www.youtube.com/watch?v=CX_fx0mjpUI (Ich hoffe, der Link ist korrekt eingegeben.) Der RoboKran, der Schach spielt.

Über Bemerkungen, Kritik und Kommentare eurerseits würde ich mich sehr freuen.

Ich habe vor, das Kran-Projekt als detalliertes Tutorial auf YouTube mit etlichen Videos zu veröffentlichen.

Liebe Grüße Peter

Hallo Peter,

da kann ich nur sagen: Respekt!!

Wie mit einfachsten Mitteln ein Roboterarm zu realisieren ist, ganz große Klasse!

Gruß

Martin

Hallo Peter

von meiner Seite aus auch erst ein mal Respect, ein schönes Projekt!

Ein Tutorial zum Bau und zum Code würde sicherlich großen Anklang finden, es sollte nur nicht ganz so langatmig gestaltet sein, wie das Einführungsvideo, für meinen Geschmack hätten vier/fünf Züge zum Vorstellen des Projekts ausgereicht.

Als Steigerung wäre es sicherlich reizvoll, dass die Züge nicht in den Rechner eingegeben werden müssen, sondern der Arm das Spielbrett scannt und selbstständig erkennt welche Figur wo steht und welcher Zug gemacht wurde. Ist dann aber sicherlich erheblich schwieriger.

Ich hoffe du bleibst dran

Güße

Max

Danke marau und hypermax für das positive feedback!

@hypermax Ganz klar, das Video ist ohne Zweifel zu langatmig. Kommt mir im Nachhinein wie eine Schlaftablette vor. Das wird in Zukunft besser werden! Zu meiner Entlastung muss ich sagen, dass es mein erstes Video in meinem Leben ist, dass ich produziert haben. Allein die Kontoeröffnung bei YouTube hat mich Schweiß und Blut gekostet.

Alles Gute Euch! Peter

Super mechanische Umsetzung - gefällt mir sehr gut, v.a. die Ausgleichgewichte! ;)

Weiter so und beste Grüße

Hallo,

muß auch sagen sieht wirklich gut aus. Verdient meinen vollen Respekt. Arbeitet sehr sauber. Schönes Spielzeug. :D

ein Wort: Toll! Ich bin begeistert. Super Projekt.

Piccus: @hypermax Ganz klar, das Video ist ohne Zweifel zu langatmig. Kommt mir im Nachhinein wie eine Schlaftablette vor. Das wird in Zukunft besser werden! Zu meiner Entlastung muss ich sagen, dass es mein erstes Video in meinem Leben ist, dass ich produziert haben. Allein die Kontoeröffnung bei YouTube hat mich Schweiß und Blut gekostet.

Alles Gute Euch! Peter

Jetzt da Du ein YouTube account hast könntest Du ja die Kurzversion des Videos schneiden ;) ;) ;)

Schönes Projekt. Gratuliere. Uwe

Danke Euch, ihr über mir, für die freundlichen Kommentare!

Das bestärkt mich sehr, weiterzumachen.

@Uwe: Die Idee, das Ganze noch einmal neu aufzulegen, zügiger, flüssiger, hatte ich auch schon. Ich denke aber, ich belasse es jetzt mal dabei. Wie heißt es so schön: "Jeden Tag ein bisschen besser." Ich brauche mehr Übung in der Live-Präsentation.

Danke noch mal für Eure ermunternden Antworten! Peter

Hallo liebes Forum,

ich habe jetzt zwei weitere Videos ins Internet gestellt. Ich würde mich sehr freuen über den einen oder anderen Kommentar von Eurer Seite.

http://www.youtube.com/user/ProjektAdeTeK?feature=watch

Alles Gute Euch!

Peter

Hallo Peter,

Deine Videos gefallen mir sehr gut. Ich hätte nicht gedacht, dass man mit so wenig Aufwand so gute Ergebnisse erzielen kann. Ich halte es für ein sehr gutes Projekt zum Einstieg in die Roboter-Technik.

Welche Motore hast Du verbaut ? Welche Leistung haben diese ?

Gruss Kurti

Hallo Kurti,

ich freue mich sehr, dass Dein Eindruck ein positiver ist. Danke dafür!

Die Motoren, die die beiden Arme steuern sind jeweils 12V und 0,4A pro Phase. Der X-Motor, den man im Video nicht sehen kann, hat 4V und 1,6A. Ich hatte ihn noch aus den früheren Projekten herumliegen. Man muss bei ihm schon die Strombegrenzung an den Pololu-Schrittmotortreibern sorgfältig einstellen, sonst entsteht schnell große Hitze.

Viele Grüße Peter

Hallo Peter, Danke für Deine schnelle Antwort.

In der Zwischenzeit habe ich mir die 3 Videos nochmal genau angesehen und wie von Dir vorgeschlagen Screenshots angefertigt.

Dabei ist mir aufgefallen, dass im Hintergrund einiges an Material liegt. Dadurch werden teilweise Einzelheiten schlecht erkennbar. Den grünen Hintergrund finde ich gut geeignet. Das Du mitlerweile HD anbietest ist auch toll und hilfreich.

Ich wünsche mir eine Materialliste. Man könnte dann die benötigten Teile bestellen, zusammen bestellen und Porto sparen bzw. zusammen im Baumarkt kaufen.

Ich freue mich auf weitere Folgen.

Gruss Kurti, der einen Nachbau plant

Hallo Kurti,

es freut mich, dass Du einen Nachbau planst. Was die Materialliste anbelangt, so hätte ich das sowieso auf dem YouTube-Kanal veröffentlicht. Aber lass mir da noch ein bisschen Zeit.

Ich kann Dir aber folgendes anbieten:

  1. Minikontakte, ich habe etliche hundert davon (noch von früher).
  2. Messing-Laufrollen für die Rechts-Linksfahrt des X-Motors + Arretierung
  3. Die Federn, von denen ich im 2. Video sprach.
  4. Schubladenauszug für X-Achse (gebraucht, aber top in Ordnung)
  5. Kugellager 22 mm
  6. 4 cm Holzdübel für die Bandführung der Doppelfedern usw...

Das sind alles Dinge, die man nicht so ohne weiteres so schnell bekommt.

Wenn Du wirklich Interesse hast, würde ich dir die Teile schenken und zusenden. Da ich hier neu im Forum bin, weiß ich jetzt nicht, wie wir privat miteinander kommunizieren können. Gib mir einen Tip und die Sachen sind schnell auf der Post.

Liebe Grüße Peter

Hallo Peter,

die Teile sind angekommen, allerherzlichsten Dank dafür.

Schön das die Berichterstattung auf Youtube weitergeht. Danke für Deine Mühe.

Gruss Kurti

Hallo liebe Foristen,

für alle, die sich für Schrittmotoren und Rampen für diese interessieren, auf meinem YouTube-Kanal das Beispiel Schrittmotoren:

http://www.youtube.com/user/ProjektAdeTeK?feature=watch

@Kurti Schön, dass Du die Teile bekommen hast.

Viele Grüße an alle Peter

Hallo Peter, abermals Danke für Dein Projekt auf YouTube.

Bitte sei so nett und veröffentliche die Codes aus den Videos hier. Dann muss nicht jeder diese abtippen.

Danke und Frohe Ostern Kurti

Hallo Kurti,
die Veröffentlichung des Codes in diesem Forum ist eine super Idee. Danke für den Tip! Ich werde auf dem YouTube-Kanal auf dieses Forum verweisen.

Hier also der erste Arduino-Code des Projekts AdeTeK:

int LED_Pin13 = 13;

const int ANZAHL_FELDER = 5;//Werte durch "," getrennt
int       feldIndex = 0;
float     values[ANZAHL_FELDER];

//---------------------------------------------------------------------------------------
void setup()
{
  pinMode(LED_Pin13, OUTPUT);
  Serial.begin(9600);
}//Ende:.void setup()
//---------------------------------------------------------------------------------------

//---------------------------------------------------------------------------------------
void loop()
{
	if( Serial.available())
	{

		for(feldIndex = 0; feldIndex  < ANZAHL_FELDER; feldIndex ++)
		{
			values[feldIndex] = Serial.parseFloat();
		}//Ende:.for(fieldIndex = 0; fieldIndex  < 5; fieldIndex ++)

		switch (int(values[0])) //Funktionszuordnung werden abgefragt
		{
			case 1:
			Blink_13(int(values[1]),int(values[2]));
			break;
		}//Ende:.switch (int(values[0]))

		feldIndex  = 0;
		values[0]  = 0;
		values[1]  = 0;
		values[2]  = 0;
		values[3]  = 0;
		values[4]  = 0;// ready to start over

		while (Serial.read() != -1);

	}//Ende:.if( Serial.available())
}//Ende:...void loop()
//---------------------------------------------------------------------------------------

//---------------------------------------------------------------------------------------
void Blink_13(int x_mal, int bl_freq)
{
	for (int i = 1; i <= x_mal; i++)
	{
		digitalWrite(LED_Pin13, HIGH);
		delay(bl_freq);
		digitalWrite(LED_Pin13, LOW);
		delay(bl_freq);
	}
}//Ende:.void Blink_12(int x_mal, int bl_freq)
//---------------------------------------------------------------------------------------

Dir wünsche ich auch schöne Feiertage!
Peter

An alle, die an meinem Projekt AdeTeK interessiert sind, hier der Quellcode zur Steuerung des Arduino über eine Windows-Oberfläche. Das Projekt ist auf meinem YouTube-Kanal zu finden (Video Nr. 14):

http://www.youtube.com/user/ProjektAdeTeK?feature=watch

Public Class Form1

    Private Sub btnConnect_Click(sender As Object, e As EventArgs) Handles btnConnect.Click
        Try
            SerialPort1.Open()
        Catch ex As Exception
            MsgBox("Com Port nicht verbunden.")
        End Try
        btnConnect.Enabled = False
        btnDisconnect.Enabled = True
        btnSend.Enabled = True
    End Sub

    Private Sub btnDisconnect_Click(sender As Object, e As EventArgs) Handles btnDisconnect.Click
        SerialPort1.Close()
        btnConnect.Enabled = True
        btnDisconnect.Enabled = False
        btnSend.Enabled = False
    End Sub

    Private Sub btnSend_Click(sender As Object, e As EventArgs) Handles btnSend.Click
        Try
            SerialPort1.Write(tbTxtTransmit.Text & "\n")
        Catch ex As Exception
            MsgBox("Com Port nicht verbunden.")
        End Try
    End Sub

    Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
        SerialPort1.Close()
    End Sub
End Class

Ich wünsche allen schöne Feiertage! Peter

Hier nun die Code-Ergänzug zum obigen Post. Wie empfange ich Daten vom Arduino über Visual Basic.
Im Projekt AdeTeK ist es das Video Nr. 15 auf YouTube:

#################################
Arduino Code
#################################

int LED_Pin13 = 13;

const int ANZAHL_FELDER = 5;//Werte durch "," getrennt
int       feldIndex = 0;
float     values[ANZAHL_FELDER];

//---------------------------------------------------------------------------------------
void setup()
{
  pinMode(LED_Pin13, OUTPUT);
  Serial.begin(9600);
}//Ende:.void setup()
//---------------------------------------------------------------------------------------

//---------------------------------------------------------------------------------------
void loop()
{
  if( Serial.available())
  {

    for(feldIndex = 0; feldIndex  < ANZAHL_FELDER; feldIndex ++)
    {
      values[feldIndex] = Serial.parseFloat();
    }//Ende:.for(fieldIndex = 0; fieldIndex  < 5; fieldIndex ++)

    switch (int(values[0])) //Funktionszuordnung werden abgefragt
    {
      case 1:
        Blink_13(int(values[1]),int(values[2]));
      break;

      case 12:
        Kaufmann(float (values[1]));
      break;
    }//Ende:.switch (int(values[0]))

    feldIndex  = 0;
    values[0]  = 0;
    values[1]  = 0;
    values[2]  = 0;
    values[3]  = 0;
    values[4]  = 0;// ready to start over

    while (Serial.read() != -1);

  }//Ende:.if( Serial.available())
}//Ende:...void loop()
//---------------------------------------------------------------------------------------

//---------------------------------------------------------------------------------------
void Blink_13(int x_mal, int bl_freq)
{
	for (int i = 1; i <= x_mal; i++)
	{
		digitalWrite(LED_Pin13, HIGH);
		delay(bl_freq);
		digitalWrite(LED_Pin13, LOW);
		delay(bl_freq);
	}
}//Ende:.void Blink_12(int x_mal, int bl_freq)
//---------------------------------------------------------------------------------------

//---------------------------------------------------------------------------------------
int runden(float number) //kaufmaennisches Runden
{
  int x;
  x = (int)number;
  if (number - x >= 0.5)
  {
    x += 1;
  }
  else
  {
    x = (int)number;
  }
  return x;
}//Ende: int runden(float number)
//---------------------------------------------------------------------------------------

//---------------------------------------------------------------------------------------
void Kaufmann(float dezimalzahl)
{
  int gerundeteZahl = runden(dezimalzahl);
  Serial.print("Dezimalzahl    = "); Serial.println(dezimalzahl);
  Serial.print("gerundete Zahl = "); Serial.println(gerundeteZahl);
}//Ende: void Kaufmann(float dezimalzahl)
//---------------------------------------------------------------------------------------


#################################
Visual Basic Code
#################################

Public Class Form1
    '-------------------------------------------------------------------------------------
    Delegate Sub SetTextCallback(ByVal [text] As String)
    '-------------------------------------------------------------------------------------

    Private Sub btnConnect_Click(sender As Object, e As EventArgs) Handles btnConnect.Click
        Try
            SerialPort1.Open()
        Catch ex As Exception
            MsgBox("Com Port nicht verbunden.")
        End Try
        btnConnect.Enabled = False
        btnDisconnect.Enabled = True
        btnSend.Enabled = True
    End Sub

    Private Sub btnDisconnect_Click(sender As Object, e As EventArgs) Handles btnDisconnect.Click
        SerialPort1.Close()
        btnConnect.Enabled = True
        btnDisconnect.Enabled = False
        btnSend.Enabled = False
    End Sub

    Private Sub btnSend_Click(sender As Object, e As EventArgs) Handles btnSend.Click
        Try
            SerialPort1.Write(tbTxtTransmit.Text & "\n")
        Catch ex As Exception
            MsgBox("Com Port nicht verbunden.")
        End Try
    End Sub

    Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
        SerialPort1.Close()
    End Sub

    Private Sub ReceivedText(ByVal [text] As String)
        If Me.tbReceived.InvokeRequired Then
            Dim x As New SetTextCallback(AddressOf ReceivedText)
            Me.Invoke(x, New Object() {(text)})
        Else
            Me.tbReceived.Text &= [text]
        End If
    End Sub

    Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        ReceivedText(SerialPort1.ReadExisting())
    End Sub

    Private Sub btnCLR_Click(sender As Object, e As EventArgs) Handles btnCLR.Click
        tbReceived.Clear()
    End Sub
End Class

Viele Grüße an alle!
Peter