PB schaltet über Arduino LED

Anfängerfragen zum Programmieren mit PureBasic.
Lennart
Beiträge: 3
Registriert: 02.01.2018 18:57

PB schaltet über Arduino LED

Beitrag von Lennart »

Hallo liebe Forenmitglieder!

Möchte mich kurz vorstellen: Lennart(schwedisch), 53J, Elektronikbastler seit Philips Baukästen 1972, Modellbahner, PIC Programmierer über Parsic, Platinenfräser mit CNC....., Eagle cad...
Grundsätzlich ist ja "learning by doing" mein ewiges erfolgreiches Motto, jetzt häng ich aber fest und möchte um eure Hilfe bitten.

Vorhandene Hard und Software; ArduinoMega2560, Breadboards,Led... PureBasic Programm

Ich sitze nun schon seit Tagen und versuche folgendes zu realisieren:
Kleines PB-Proggi mit 2 Buttons (LED "rot" und LED "grün")in weisser Farbe gehalten,Programmhintergrundfarbe egal.
EINER davon soll schon, als hätte man ihn bereits per Maus angeklickt rot oder grün dargestellt werden. ButtonBeschriftung rot und grün
Paralell dazu soll am Arduino die rote oder grüne Led leuchten (z.B. Pin 12 für rot, Pin 13 für grün)
Klicke ich per Maus den anderen Button als den farblich "aktiven", soll dieser aktiv sich einfärben,der ursprüngliche wieder weiss werden,
die Led am Arduino parallel mitmachen. Also "roter Button-rote Led" oder nach klick "grüner Button-grüne Led).

Hätt ich nicht schon Kopfschmerzen würde ich nicht um Hilfe bitten :freak:

Danke für Eure Unterstützung
Lennart
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: PB schaltet über Arduino LED

Beitrag von Mijikai »

Mit Arduino kenne ich mich nicht aus, hier trotzdem mal ein Grundgerüst...

Code: Alles auswählen

;PB 5.61 [OS: Windows]
If OpenWindow(0,0,0,100,120,"LED",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  SetWindowColor(0,#Black)
  If TextGadget(1,40,10,50,50,"ROT",#SS_NOTIFY) And TextGadget(2,40,60,50,50,"GRÜN",#SS_NOTIFY)
    SetGadgetColor(1,#PB_Gadget_BackColor,#Red)
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_Gadget
          If EventGadget() = 1
            SetGadgetColor(1,#PB_Gadget_BackColor,#Red)
            SetGadgetColor(2,#PB_Gadget_BackColor,#White)
          Else
            SetGadgetColor(1,#PB_Gadget_BackColor,#White)
            SetGadgetColor(2,#PB_Gadget_BackColor,#Green)
          EndIf
        Case #PB_Event_CloseWindow
          Break
      EndSelect
    ForEver
  EndIf
EndIf 
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: PB schaltet über Arduino LED

Beitrag von ccode_new »

Hallo Lennart,

ich werde dir jetzt kein fertiges Programm basteln.

Aber ich gebe dir einiges von Nutzen mit.

1. Farbige Button werden direkt von PureBasic nicht unterstützt.

> Du könntest mit CreateImage(..) arbeiten und ButtonImageGadget(..) verwenden.

2. Ein COM-Port öffnest du z.B. so:

;Global Port.s = "/dev/ttyACM0"
Global Port.s = "COM1"
Global Baudrate.i = 9600
OCom = OpenSerialPort(0, Port, Baudrate, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)

3. Seriale-Daten vom Arduino liest du zum Beispiel so:

Code: Alles auswählen

Procedure.s ReadSerialPortString(port.i)
   Protected length.i = AvailableSerialPortInput(port)
   Protected *mem, pos = 0
   Protected result.s
   
   If length And IsSerialPort(port)
      *mem = AllocateMemory(length)
      While pos < length
         pos + ReadSerialPortData(port, *mem + pos, length - pos)
      Wend
      result = PeekS(*mem, length, #PB_Ascii)
      FreeMemory(*mem)
      
      ProcedureReturn result
   EndIf
   ProcedureReturn ""
 EndProcedure

....
Case #PB_Event_Timer
     If EventTimer() = 123
       If IsSerialPort(0)
        Bytes = AvailableSerialPortInput(0)
               If Bytes >= 8
                  output = ReadSerialPortString(0)
               EndIf
        SerialOut = output
      EndIf
4. Daten zum Arduino (für das Schalten) sendest du z.B. so:

Code: Alles auswählen

If IsSerialPort(0)
   WriteSerialPortString(0, "1") ;z.B. Anschalten
EndIf
5. Auf dem Arduino könnte das dann so aussehen:

Code: Alles auswählen

String inputString = "";
boolean stringComplete = false;
int led = 13;

void setup() {
  pinMode(led, OUTPUT);
  Serial.begin(9600);
  inputString.reserve(200);
}

void loop() {
  if (stringComplete) {
    Serial.println(inputString);
    inputString = "";
    stringComplete = false;
  }
}

void serialEvent() {
  while (Serial.available()) {
    
    char inChar = (char)Serial.read(); 

    if (inChar == '1') { //LED anschalten
      digitalWrite(led, HIGH);
      stringComplete = true;
    }
    if (inChar == '0') { //LED ausschalten
      digitalWrite(led, LOW);
      stringComplete = true;
    } 
  }
}
Das dient alles nur als einfaches Beispiel.
Viel Spaß beim Probieren und Programmieren.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Lennart
Beiträge: 3
Registriert: 02.01.2018 18:57

Re: PB schaltet über Arduino LED

Beitrag von Lennart »

Danke an Mijikai und ccode_new, werde mal intensiv aufarbeiten, was draus lernen,
und mich dann natürlich mit "Erfahrungen" melden. :allright:
Gruß Lennart
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: PB schaltet über Arduino LED

Beitrag von tft »

Hallo,

also PB und Arduino sind genau mein Ding. Da du schon gute Hinweise erhalten hast. Probier erst mal. Wenn du dann nicht weiter kommst
helfe ich gerne weiter. In unserem Alter muss man sich helfen :-)

Gruss Turgut
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Lennart
Beiträge: 3
Registriert: 02.01.2018 18:57

Re: PB schaltet über Arduino LED

Beitrag von Lennart »

Oh, danke an tft, ich arbeit mal los, melde mich bei Euch dann mit meinen ERFAHRUNGEN !!!
PS:tut gut so das helfen im Alter...... :lol:
das kennt die Jugend noch nicht :bounce:
Antworten