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ę
Moglibyście mnie naprowadzić, który temat powinienem zgłębić lub co mi umyka?
Wystrugany kod:
Co bym chciał dołączyć:
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ę
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();
}