Использование MouseX в обработке для управления светодиодами. Ошибка в коде - светодиоды не горят

Я новичок в процессорах и Arduino. У меня крайний срок курсовой работы по обоим в понедельник (6 января).

Я пытаюсь написать скрипт, который использует значения mouseX для включения и выключения светодиодов. У меня нет сообщений об ошибках ни в одном из сценариев, но в настоящее время со светодиодами ничего не происходит (они остаются выключенными), когда я двигаю мышью. Я протестировал схему с более простым кодом Arduino, и он правильный, поэтому в моем коде должна быть ошибка!

Буду очень признателен за помощь. Спасибо!

Код обработки:

import processing.serial.*;
Serial port;  
byte lightsOn;

void setup()
{
  size(600,300);
  port=new Serial(this,"/dev/cu.usbmodem1411",9600);
}

void draw()
{
  background(32,78,95);
  rect(300,0,300,300);
  noStroke();
  fill(185,215,216);

  lightsOn=byte(mouseX);
  port.write(lightsOn); 

  println(lightsOn);
}

Код Arduino:

#include <Servo.h>

Servo myservo;
int ledpinA=12; 
int ledpinB=13;

void setup() 
{
  Serial.begin(9600);
  myservo.attach(ledpinA&&ledpinB);
  pinMode(ledpinA,OUTPUT);
  pinMode(ledpinB,OUTPUT);
}

void loop()
{
  if(0<Serial.available())
  {
    int data = Serial.read();

  if (data>300)
  {
    digitalWrite(ledpinA, HIGH);
    digitalWrite(ledpinB, LOW);
  }
  else
  {
    digitalWrite(ledpinB, HIGH);
    digitalWrite(ledpinA, LOW);
  }
  }
}

, 👍0


1 ответ


1
lightsOn=byte(mouseX);

Байт может быть любым числом от -128 до 127 (в Java нет понятия "беззнаковые" значения). Arduino интерпретирует это как значение от 0 до 255.

if (data>300)

255, максимальное значение, никогда не может быть больше 300, поэтому это всегда не будет работать.

Вам нужно переосмыслить, какие данные вы отправляете и как вы хотите их отправлять.

,