Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  6 904
Hei.
Jeg holder på å lage et program som gjør at jeg kan styre en rc bil ved hjelp av
en arduino og bluetooth. Det jeg lurer på er hvordan kan jeg styre den med tastaturet? Nå så må jeg klikke på de forksjellige kanppene for at bilen skal flytte seg. Ønsker å sende for.eks. "F" når jeg holder inne W og sende "S" når jeg slipper
Noen som kan hjelpe?

http://bildr.no/thumb/1250476.jpeg
A madman with a box
mabala's Avatar
Bruk formens KeyDown og KeyUp event.
F.eks:

Kode

 Private Sub Form1_KeyDown()
        If e.KeyCode = Keys.W Then
            Label1.Text = "W DOWN"
        End If
og

Kode

 Private Sub Form1_KeyUp()
        If e.KeyCode = Keys.W Then
            Label1.Text = "W UP"
        End If
Trådstarter
Prøver denne:

Kode

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        Select Case
            Case e.KeyCode = Keys.W
                fwdButton.PerformClick()
            Case e.KeyCode = Keys.S
                revButton.PerformClick()
            Case e.KeyCode = Keys.A
                lftButton.PerformClick()
            Case e.KeyCode = Keys.D
                rigButton.PerformClick()
        End Select
    End Sub
Men denne kjører vel bare det som står i *.button.Click?
Altså denne:

Kode

Private Sub fwdButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles fwdButton.Click
        SerialPort1.Write("F")
    End Sub
Klarer ikke å få den til å sende en "S" når jeg slipper for.eks W
Skal vel bare være å lage en tilsvarende case med keyup? Slik at den på keyup.W sender SerialPort1.Write("S") osv.?
Trådstarter
Sitat av lroedal Vis innlegg
Skal vel bare være å lage en tilsvarende case med keyup? Slik at den på keyup.W sender SerialPort1.Write("S") osv.?
Vis hele sitatet...
Jamen, på case'n så vil jo den fortsatt kjøre det som står i fwdButton.Click?

Å der står det jo serialport write.

Ble rotete nå, men skjønner du va jeg mener?
Bea
Big Bad Wolf
Bea's Avatar
Har du en kommando du kan sende til bilen for å få den til å stoppe?

SerialPort1.Write("S") feks? Hvis ikke lag det, også tar du en KeyUp metode som skriver det til Serialporten.
Trådstarter
Må ha vert litt trøtt i går. for nå skjønte jeg hvordan dere mente
Takker for all hjelp
Løste det på denne måten:

Kode

Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
        If e.KeyCode = Keys.W Then
            SerialPort1.Write("S")
        End If
        If e.KeyCode = Keys.S Then
            SerialPort1.Write("S")
        End If
        If e.KeyCode = Keys.A Then
            SerialPort1.Write("S")
        End If
        If e.KeyCode = Keys.D Then
            SerialPort1.Write("S")
        End If

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.W Then
            SerialPort1.Write("F")
        End If
        If e.KeyCode = Keys.S Then
            SerialPort1.Write("B")
        End If
        If e.KeyCode = Keys.A Then
            SerialPort1.Write("L")
        End If
        If e.KeyCode = Keys.D Then
            SerialPort1.Write("R")
        End If