2013-09-02 9 views
6

Skopiowałem ten program i mam problem z funkcją void downFrequency (chyba). To jest dla Arduino Uno. Oto błędy kompilatora: kompilowania 'MY_dds' dla 'Arduino Uno'C błędy kompilacji: zbłąkane ' 200' w programie i oczekiwane ')' przed stałą numeryczną

MY_dds.ino : stray '\342' in program 
MY_dds.ino : stray '\200' in program 
MY_dds.ino : stray '\223' in program 
MY_dds.ino : stray '\342' in program 
MY_dds.ino : stray '\200' in program 
MY_dds.ino : stray '\223' in program 
MY_dds.ino : stray '\342' in program 
MY_dds.ino : stray '\200' in program 
MY_dds.ino : stray '\223' in program 
MY_dds.ino : stray '\342' in program 
MY_dds.ino : stray '\200' in program 
MY_dds.ino : stray '\223' in program 
MY_dds.ino : stray '\342' in program 
MY_dds.ino : stray '\200' in program 
MY_dds.ino : stray '\223' in program 
MY_dds.ino : stray '\342' in program 
MY_dds.ino : stray '\200' in program 
MY_dds.ino : stray '\223' in program 
MY_dds.ino : stray '\342' in program 
MY_dds.ino : stray '\200' in program 
MY_dds.ino : stray '\223' in program 
MY_dds.ino : stray '\342' in program 
MY_dds.ino : stray '\200' in program 
MY_dds.ino : stray '\223' in program 
MY_dds.ino : stray '\342' in program 
MY_dds.ino : stray '\200' in program 
MY_dds.ino : stray '\223' in program 
MY_dds.ino : : In function 'void downFrequency()': 
MY_dds.ino : expected `)' before numeric constant 
MY_dds.ino : expected `)' before numeric constant 
MY_dds.ino : expected `)' before numeric constant 
MY_dds.ino : expected `)' before numeric constant 
MY_dds.ino : expected `)' before numeric constant 
MY_dds.ino : expected `)' before numeric constant 
MY_dds.ino : expected `)' before numeric constant 
MY_dds.ino : expected `)' before numeric constant 
Error compiling 

Oto program:

#include <stdio.h> 
#include <dds.h> 
#include <LiquidCrystal.h> 

#define RESET 13 
#define data_pin 12 
#define load_pin A5 
#define clock_pin A4 
#define clock_hz 120000000LL 
#define calibrationValue -0.0400000 // this is a value we change to calibrate our particular chip more accurately 
#define buttonPin A0 

// chip, data_pin, load_pin, clock_pin, clock_hz 
dds ddschip(DDS9850, data_pin, load_pin, clock_pin, clock_hz); // set my dds up with 120mhz onboard crystal 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 

// some variables to use in our program 
long toFrequency = 14070000; 
long currentFrequency; 
long maxFrequency = 40000000; 
long minFrequency = 0; 
int incrementNumber = 6; 
int maxprogramnumber = 6; // don't forget to increase the menu numbers here!! 
int programnumber = 1; 

void setup() 

{ 
Serial.begin(9600); 
Serial.println("Beginning Setup"); 
// set up the LCD’s number of columns and rows: 
lcd.begin(16, 2); 
lcd.clear(); 
lcd.setCursor(0, 0); 
lcd.print("T.Robb V0.1b "); //Print a little message 
lcd.setCursor(0, 1); 
lcd.print(" DDS Sine wave "); 
delay(2000); 
// setup pins 
pinMode(RESET, OUTPUT); 
pinMode(data_pin, OUTPUT); 
pinMode(load_pin, OUTPUT); 
pinMode(clock_pin, OUTPUT); 
pinMode(buttonPin, INPUT); 
digitalWrite(buttonPin, HIGH); 

ddschip.calibrate(calibrationValue); // this is a value we change to calibrate our particular chip more accurately 
ddschip.setfrequency(toFrequency); 
lcd.clear(); 

} 

void loop() 
{ 
if(toFrequency >= maxFrequency){(toFrequency = maxFrequency);} 
if(toFrequency <= minFrequency){(toFrequency = minFrequency);} 
ddschip.setfrequency(toFrequency); 
currentFrequency = toFrequency; 

switch(incrementNumber){ 

case 0: 
Serial.println("increment amount is 1hz"); 
lcd.setCursor(0, 0); 
lcd.print("Change By 1hz"); 
break; 

case 1: 
Serial.println("increment amount is 10hz"); 
lcd.setCursor(0, 0); 
lcd.print("Change By 10hz "); 
break; 

case 2: 
Serial.println("increment amount is 100hz"); 
lcd.setCursor(0, 0); 
lcd.print("Change By 100hz "); 
break; 

case 3: 
Serial.println("increment amount is 1 000hz"); 
lcd.setCursor(0, 0); 
lcd.print("Change By 1khz"); 
break; 

case 4: 
Serial.println("increment amount is 10 000hz"); 
lcd.setCursor(0, 0); 
lcd.print("Change By 10khz"); 
break; 

case 5: 
Serial.println("increment amount is 100 000hz"); 
lcd.setCursor(0, 0); 
lcd.print("Change By 100khz"); 
break; 

case 6: 
Serial.println("increment amount is 1 000 000hz"); 
lcd.setCursor(0, 0); 
lcd.print("Change By 1Mhz"); 
break; 

default: 
Serial.println("increment amount is 100hz"); 
lcd.setCursor(0, 0); 
lcd.print("Change By 100hz "); 
break; 
} 

lcd.setCursor(0, 1); 
lcd.print("Freq is "); //Print to lcd 
lcd.setCursor(8, 1); 
lcd.print(currentFrequency); 

Serial.println(incrementNumber); // temporary for debugging delete me 

Serial.print("Current Frequency is set to :"); 
Serial.println(currentFrequency); 

while((analogRead(buttonPin))>=1000){} // do nothing while no buttons pressed to chill out 
delay(5); 
if(analogRead(buttonPin)>=100 && analogRead(buttonPin)<=200){ // we have pushed up 
upFrequency(); 
delay(300); 
} 

if(analogRead(buttonPin)>=200 && analogRead(buttonPin)<=400){ // we have pushed down 
downFrequency(); 
delay(300); 
} 

if((analogRead(buttonPin))<=50){ // we have pushed right 
incrementNumber++; 
delay(300); 
} 

if(analogRead(buttonPin)>=400 && analogRead(buttonPin)<=600){ // we have pushed left 
incrementNumber–; 
delay(300); 
} 

if(incrementNumber > 6){incrementNumber = 0;} // this is where the menu goes around and around 
if(incrementNumber < 0){incrementNumber = 6;} 

delay(100); 
lcd.clear(); 

} 
void upFrequency() 
{ 
Serial.println("Going UP Frequency"); 
switch(incrementNumber){ 

case 0: 
toFrequency = (toFrequency + 1); 
break; 

case 1: 
toFrequency = (toFrequency + 10); 
break; 

case 2: 
toFrequency = (toFrequency + 100); 
break; 

case 3: 
toFrequency = (toFrequency + 1000); 
break; 

case 4: 
toFrequency = (toFrequency + 10000); 
break; 

case 5: 
toFrequency = (toFrequency + 100000); 
break; 
case 6: 
toFrequency = (toFrequency + 1000000); 
break; 

default: 
toFrequency = (toFrequency + 10); 
break; 
} 

} 
void downFrequency() 
{ 

Serial.println("Going DOWN Frequency"); 
switch(incrementNumber){ 

case 0: 
toFrequency = (toFrequency – 1); 
break; 

case 1: 
toFrequency = (toFrequency – 10); 
break; 

case 2: 
toFrequency = (toFrequency – 100); 
break; 

case 3: 
toFrequency = (toFrequency – 1000); 
break; 

case 4: 
toFrequency = (toFrequency – 10000); 
break; 

case 5: 
toFrequency = (toFrequency – 100000); 
break; 

case 6: 
toFrequency = (toFrequency – 1000000); 
break; 

default: 
toFrequency = (toFrequency – 10); 
break; 
} 
} 
+0

Jaka jest nazwa pliku źródłowego powyżej i jakie jest dokładne polecenie, którego używasz do wypróbowania i skompilowania? –

+3

Kiedy mówisz "kopiowane", co masz na myśli? Jak w, być może, Ctrl-C z pliku PDF? – trojanfoe

+0

nie można skompilować braków plików nagłówkowych.LiquidCrystal.h, dds.h – Gangadhar

Odpowiedz

14

pan jakoś skończyło się na "En kreska" znaków, zamiast normalne znaki minus, w funkcji downFrequency.

Upewnij się, że edytujesz za pomocą edytora tekstu, a nie edytora tekstu; i dla każdego z nich:

toFrequency = (toFrequency – 1); 
         ^

usunięcie zaznaczonej litery i ponowne wpisanie jej jako zwykłego znaku minus.

(Jeśli jesteś zainteresowany w krwawych szczegółów, postać „kreska” jest Unicode 2013, kodowane w UTF-8 bajtów z trzech wartości ósemkowej 324,200,223, dlatego widzisz te liczby w komunikatach o błędach.)

+0

Wszystkie ustalone teraz! Znaki były błędne, tak jak powiedziałeś. –

+0

to stało się mi podczas kopiowania kodu z postu stackoverflow do vima. – JohnMerlino

4

prawdopodobnie twój podwójne symbole cudzysłów (") były błędne. Proszę sprawdzić, czy są one rzeczywiście ", a nie .

+0

Ja też napotkałem ten sam problem z ". –

+0

up1 To zadziałało dla mnie.Dziękuję, –

+0

Dziękuję, to zadziałało dla mnie – rajarajan2809

9

kompilator narzeka, że ​​są znaki spoza ASCII w pliku źródłowym.

Mój ósemkowy fu jest zardzewiały, ale dla mnie wygląda jak UTF-8. 342 200 223 to E2 80 93, który jest Unicode "EN DASH". Kod ten otrzymał odszukanie znaku minus przez edytora tekstu ze stopniem kosmetologii.

+0

+1 dla poprawnego, ale także zabawnego, odpowiedź :) –

Powiązane problemy