• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
odczyt sensorów + danych z myszki przez usb shield
#1
Cześć,
coś mi umyka, może ktoś mnie delikatnie naprowadzi.
Mam podłączone do Arduino Uno r3:
- czujnik odległości hc-sr04
- bluetooth hc-05
- enkoder
- pare ledów
- USB host shield z myszką do sczytywania pozycji

Złączenie kodu zawierającego pierwsze 4 pozycje nie sprawiło większego problemu, jednak czegoś nie wiem, co by pozwoliło dołączyć do programu usb shield z myszką. Zwyczajne scalenie kodów jak widzę nie wchodzi w grę Smile
Moglibyście mnie naprowadzić, który temat powinienem zgłębić lub co mi umyka?

Wystrugany kod:

Kod:
//czujnik odległości
#define trigPin 12
#define echoPin 11
//

//diody
#define czerwona 18
#define zielona 17
#define niebieska 19
//

//ekran
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja o podłączeniu nowego wyświetlacza
//

int akcja = 0;
unsigned long previousMillis = 0;
const long interval = 500;

// enkoder
#include <Encoder.h>
Encoder myEnc(15, 16);
//



void setup() {

 Serial.begin( 9600 );
 lcd.begin(16, 2); //ekran
 lcd.clear();
 lcd.setCursor(0, 0); //Ustawienie kursora
 lcd.print("Dystans  Rotacja");
 lcd.setCursor(0,1);
 pinMode(trigPin, OUTPUT); //Pin, do którego podłączymy trig jako wyjście
 pinMode(echoPin, INPUT); //a echo, jako wejście
 pinMode(czerwona, OUTPUT);
 pinMode(zielona, OUTPUT);
 pinMode(niebieska, OUTPUT);

}
// enkoder
long oldPosition  = -999;
//

void loop() {  
 unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
   // save the last time
   previousMillis = currentMillis;
 Serial.print(zmierzOdleglosc());
 Serial.println(" cm");  
 lcd.setCursor(0, 1); //Ustawienie kursora w odpowiednim momencie
 lcd.print(zmierzOdleglosc()); //Wyświetlenie tekstu
 lcd.print(" cm  ");
 zakres(1, 25); //Włącz alarm, jeśli w odległości od 10 do 25 cm od czujnika jest przeszkoda  
 zakres2(26, 200);
 reakcja();
 }

 // enkoder
 long newPosition = myEnc.read();
 if (newPosition != oldPosition) {
   oldPosition = newPosition;
   Serial.println(newPosition);
    lcd.setCursor(10, 1); //Ustawienie kursora w odpowiednim momencie
    lcd.print(newPosition); //Wyświetlenie tekstu
    lcd.print(" ");
 }
 //

}

int zmierzOdleglosc() {
 long czas, dystans;

 digitalWrite(trigPin, LOW);
 delayMicroseconds(2);
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(trigPin, LOW);

 czas = pulseIn(echoPin, HIGH);
 dystans = czas / 58;

 return dystans;
}

void zakres(int a, int b) {
 int jakDaleko = zmierzOdleglosc();
 if ((jakDaleko > a) && (jakDaleko < b)) {
     digitalWrite(czerwona, HIGH);
     akcja = 1;
 } else {
     digitalWrite(czerwona, LOW);
akcja = 0;
 }
}

void zakres2(int a, int b) {
 int jakDaleko = zmierzOdleglosc();
 if ((jakDaleko > a) && (jakDaleko < b)) {
     digitalWrite(zielona, HIGH);
 } else {
     digitalWrite(zielona, LOW);
 }
}

void reakcja() {
 if (akcja == 1) {
     digitalWrite(niebieska, HIGH);
 } else {
     digitalWrite(niebieska, LOW);
 }}


Co bym chciał dołączyć:
Kod:
#include <hidboot.h>
#include <usbhub.h>

// Satisfy the IDE, which needs to see the include statment in the ino too.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
#include <SPI.h>

class MouseRptParser : public MouseReportParser
{
protected:
    void OnMouseMove    (MOUSEINFO *mi);
    void OnLeftButtonUp    (MOUSEINFO *mi);
    void OnLeftButtonDown    (MOUSEINFO *mi);
    void OnRightButtonUp    (MOUSEINFO *mi);
    void OnRightButtonDown    (MOUSEINFO *mi);
    void OnMiddleButtonUp    (MOUSEINFO *mi);
    void OnMiddleButtonDown    (MOUSEINFO *mi);
};
void MouseRptParser::OnMouseMove(MOUSEINFO *mi)
{
   Serial.print("dx=");
   Serial.print(mi->dX, DEC);
   Serial.print(" dy=");
   Serial.println(mi->dY, DEC);
};
void MouseRptParser::OnLeftButtonUp    (MOUSEINFO *mi)
{
   Serial.println("L Butt Up");
};
void MouseRptParser::OnLeftButtonDown    (MOUSEINFO *mi)
{
   Serial.println("L Butt Dn");
};
void MouseRptParser::OnRightButtonUp    (MOUSEINFO *mi)
{
   Serial.println("R Butt Up");
};
void MouseRptParser::OnRightButtonDown    (MOUSEINFO *mi)
{
   Serial.println("R Butt Dn");
};
void MouseRptParser::OnMiddleButtonUp    (MOUSEINFO *mi)
{
   Serial.println("M Butt Up");
};
void MouseRptParser::OnMiddleButtonDown    (MOUSEINFO *mi)
{
   Serial.println("M Butt Dn");
};

USB     Usb;
USBHub     Hub(&Usb);
HIDBoot<USB_HID_PROTOCOL_MOUSE>    HidMouse(&Usb);

MouseRptParser                               Prs;

void setup()
{
   Serial.begin( 115200 );
#if !defined(__MIPSEL__)
   while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
#endif
   Serial.println("Start");

   if (Usb.Init() == -1)
       Serial.println("OSC did not start.");

   delay( 200 );

   HidMouse.SetReportParser(0, &Prs);
}

void loop()
{
 Usb.Task();
}
 
Odpowiedź
  


Wiadomości w tym wątku
odczyt sensorów + danych z myszki przez usb shield - przez michalm89 - 09-07-2018, 21:47

Skocz do:


Przeglądający: 1 gości