Я потратил около 4, может быть, 5 часов, пытаясь выяснить этот кусок кода с сайта Java вчера.Он принимает шестнадцатеричный ввод и преобразует его в цифру.Было много методов, которые я еще не исследовал.Но после того, как я, наконец, обернул голову (кричал "birdfreeyahoo"), я попытался добавить его в свою программу и собрать.И затем я столкнулся с этой ошибкой:
ожидаемый неквалифицированный идентификатор перед 'public'
Я уже создавал и вызывал void-функции, но я никогда еще не имел дело с классами или статическими функциями.Большинство учебных пособий, за которыми я следовал, просто полагается на кодирование исключительно в рамках установки или циклов, потому что arduino ориентирован на новичков.Как упомянуто birdfreeyahoo, getDecimal (String hex) должен быть объявлен в начале функции, чтобы позже можно было использовать свойство String hex в программе.
Я знаю, что это должно быть что-то, связанное ссинтаксис класса / функции в программе, так как я скопировал код с сайта java и составляет 1: 1 verbatum (конечно, только после того, как разбил его и сначала проанализировал).
Code:
public class HexToDecimalExample3{
public static int getDecimal(String hex){
String digits = "0123456789ABCDEF";
hex = hex.toUpperCase();
int val = 0;
for (int i = 0; i < hex.length(); i++)
{
char c = hex.charAt(i);
int d = digits.indexOf(c);
val = 16*val + d;
}
return val;
}
}
Это было добавлено вместе с другими моими более простыми функциями в программе и реализовано перед установкой void () {}
Для всей моей программы и того, где она находится сейчас (для справки):
// Из-за светодиода, поставляемого в комплекте, мы вынуждены использовать некоторые обходные пути, чтобы заставить RGB работать для общего анодного светодиода.Оригинальный материал урока был направлен на общий катод.
class test{
public static void main(string[] args){
int LEDPower = 8;
int redPin = 6;
int greenPin = 5;
int bluePin = 3;
int voltInput;
String colorChoice;
//FUNCTIONS FOR SIMPLER IMPLIMENTATION
void redColor (){
analogWrite (redPin, 0);
analogWrite (greenPin, 255);
analogWrite (bluePin, 255);
}
void greenColor (){
analogWrite (redPin, 255);
analogWrite (greenPin, 0);
analogWrite (bluePin, 255);
}
void blueColor (){
analogWrite (redPin, 255);
analogWrite (greenPin, 255);
analogWrite (bluePin, 0);
}
public class HexToDecimalExample3{
public static int getDecimal(String hex){
String digits = "0123456789ABCDEF";
hex = hex.toUpperCase();
int val = 0;
for (int i = 0; i < hex.length(); i++)
{
char c = hex.charAt(i);
int d = digits.indexOf(c);
val = 16*val + d;
}
return val;
}
}
void setup() {
Serial.begin (2000000);
pinMode (LEDPower, OUTPUT);
pinMode (redPin, OUTPUT);
pinMode (greenPin, OUTPUT);
pinMode (bluePin, OUTPUT);
digitalWrite (LEDPower, HIGH);
}
/*
for (int j=1; j<3; j+1){
redColor();
delay(100);
greenColor();
delay(100);
blueColor();
delay(100);
}
*/
}
void loop() {
Serial.println("What Color Would You Like (HEX COLORS #RRGGBB)?");
while (Serial.available()==0);{
}
colorChoice = Serial.readString();
colorChoice.trim();
Serial.println("Decimal of " + colorChoice + "is: " +getDecimal(colorChoice));
if (colorChoice=="red"){
redColor();
}
if (colorChoice=="green"){
greenColor();
}
if (colorChoice=="blue"){
blueColor();
}
//THROW EXCEPTION IF NOT VALID
/*
if (colorChoice != "red" && colorChoice != "green" && colorChoice!= "blue"){
Serial.println("");
Serial.println("That is not a valid choice");
Serial.println("");
}
*/
/*
if (strstr(colorChoice, "red") != NULL){
Serial.println("applying...");
delay(1000);
analogWrite (redPin, 0);
analogWrite (greenPin, 255);
analogWrite (bluePin, 255);
}
*/
}
}
}