Szinte most kezdtem foglalkozni az arduino világával, nagyon tetszik és rengeteg tervem volna vele.
Az első dolog amit kezdésként szerettem volna megvalósítani vele az egy elpusztult Whirlpool szárítógép vezérlése.
Volt aki már csinált ilyet (az eredeti szerzője a kódnak : jason, egy blogger) az ő kódja vázlatilag azonos azzal amire nekem szükségem volna.
A kód nyilvános és szerettem is volna kipróbálni... DE... az a bizonyos DE... amikor ellenőriztem a kódot, a fordítás hibaüzenettel meg is állt.
Ime a kód:
Kód: Egész kijelölése
/* PINS */
#define MOTOR_DIR 5
#define MOTOR_EN 6
#define HEATER_EN 7
#define NTC1 A0
#define NTC2 A1
#define FULL 13
#define BUTTON 12
#define FAIL_X 9
#define OK_X 8
#define OK_PAUSE 4
#define DRY_NOIDEA 10
#define COOL_FILTER 3
#define END_FULL 2
/* Configuration */
int max_temp = 510;
int min_temp = max_temp - 150;
void lightPlay( int spins )
{
for( int x=0;x
digitalWrite(OK_X, 0);
digitalWrite(FAIL_X, 1);
digitalWrite(DRY_NOIDEA, 1); digitalWrite(END_FULL, 0);
delay(100);
digitalWrite(END_FULL, 1);digitalWrite(COOL_FILTER, 0);
delay(100);
digitalWrite(COOL_FILTER, 1); digitalWrite(DRY_NOIDEA, 0);
delay(100);
digitalWrite(OK_X, 1);
digitalWrite(FAIL_X, 0);
delay(100);
digitalWrite(DRY_NOIDEA, 1);digitalWrite(COOL_FILTER, 0);
delay(100);
digitalWrite(COOL_FILTER, 1); digitalWrite(END_FULL, 0);
delay(100);
}
}
#define LED_OK 0x10
#define LED_DRYING (0x1 | LED_OK)
#define LED_COOLING (0x2 | LED_OK)
#define LED_END (0x4 | LED_OK)
#define LED_PAUSED (0x8 | LED_OK)
#define LED_FAN (0x2 | LED_OK)
#define LED_FAN_HEAT (0x3 | LED_OK)
#define LED_NOIDEA 0x1
#define LED_FILTER 0x2
#define LED_FULL 0x4
void set_led_status( int led_status )
{
if( led_status & LED_OK ) {
digitalWrite(OK_X, 0);
digitalWrite(FAIL_X, 1);
}
else {
digitalWrite(OK_X, 1);
digitalWrite(FAIL_X, 0);
}
digitalWrite(DRY_NOIDEA, led_status&1 ? 0 : 1);
digitalWrite(COOL_FILTER, led_status&2 ?0 : 1);
digitalWrite(END_FULL,led_status&4 ? 0 : 1 );
digitalWrite(OK_PAUSE, led_status&8 ? 0 : 1);
}
void setup()
{
Serial.begin(9600);
pinMode(MOTOR_DIR, OUTPUT);
pinMode(MOTOR_EN, OUTPUT);
pinMode(HEATER_EN, OUTPUT);
pinMode(NTC1, INPUT);
pinMode(NTC1, INPUT);
pinMode(FULL, INPUT);
pinMode(BUTTON, INPUT);
pinMode(FAIL_X, OUTPUT);
pinMode(OK_X, OUTPUT);
pinMode(OK_PAUSE, OUTPUT);
pinMode(DRY_NOIDEA, OUTPUT);
pinMode(COOL_FILTER, OUTPUT);
pinMode(END_FULL, OUTPUT);
/* All lights off */
digitalWrite(OK_X, 0);
digitalWrite(FAIL_X, 1);
digitalWrite(OK_PAUSE, 1);
digitalWrite(END_FULL, 1);
digitalWrite(COOL_FILTER, 1);
digitalWrite(DRY_NOIDEA, 1);
Serial.println("Hello");
lightPlay( 5 );
}
typedef enum {
UNDEFINED,
READY,
RUN,
RUN_SPIN_HEAT,
RUN_SPIN_NO_HEAT,
FULL_PAUSE,
REFRESH_SPIN_NO_HEAT,
} STATE;
STATE state = UNDEFINED;
int ntc1;
int ntc2;
int full;
int button_up;
int button_last;
int duration = 0;
void enter_ready()
{
set_led_status( LED_PAUSED );
digitalWrite(HEATER_EN, 0);
digitalWrite(MOTOR_DIR, 0);
digitalWrite(MOTOR_EN, 0 );
}
void enter_run()
{
set_led_status( LED_FAN );
digitalWrite(HEATER_EN, 0);
digitalWrite(MOTOR_DIR, 0);
digitalWrite(MOTOR_EN, 1 );
}
void enter_run_spin_heat()
{
digitalWrite(HEATER_EN, 1);
set_led_status( LED_FAN_HEAT );
}
void enter_run_spin_no_heat()
{
digitalWrite(HEATER_EN, 0);
set_led_status( LED_FAN );
}
void enter_full_pause()
{
digitalWrite(HEATER_EN, 0);
digitalWrite(MOTOR_DIR, 0);
digitalWrite(MOTOR_EN, 0 );
set_led_status( LED_FULL );
}
void enter_refresh_spin_no_heat()
{
digitalWrite(HEATER_EN, 0);
digitalWrite(MOTOR_DIR, 0);
digitalWrite(MOTOR_EN, 1 );
set_led_status( LED_FAN | LED_END );
}
int do_ready()
{
if( full ) {
return FULL_PAUSE;
}
if( button_up ) {
return RUN;
}
return state;
}
int do_run()
{
if( button_up ) {
return REFRESH_SPIN_NO_HEAT;
}
if( duration > 3 ) {
if( full ) {
return FULL_PAUSE;
}
else {
if( ntc1 < max_temp ){
return RUN_SPIN_HEAT;
}else {
return RUN_SPIN_NO_HEAT;
}
}
}
return state;
}
int do_run_spin_heat()
{
if( full ) {
return RUN;
}
if( button_up ) {
return REFRESH_SPIN_NO_HEAT;
}
if( ntc1 > max_temp ) {
return RUN_SPIN_NO_HEAT;
}
return state;
}
int do_run_spin_no_heat()
{
if( full ) {
return RUN;
}
if( button_up ) {
return REFRESH_SPIN_NO_HEAT;
}
if( ntc1 < min_temp ) {
return RUN_SPIN_HEAT;
}
return state;
}
int do_full_pause()
{
if( button_up && !full ) {
return RUN;
}
return state;
}
int do_refresh_spin_no_heat()
{
if( button_up ) {
return READY;
}
if( duration > 10*60 ) {
return READY;
}
return state;
}
void loop()
{
ntc1 = analogRead( NTC1 );
ntc2 = analogRead( NTC2 );
full = digitalRead( FULL );
/* Handle State */
int new_state;
switch( state )
{
case READY:
new_state = do_ready();
break;
case RUN:
new_state = do_run();
break;
case RUN_SPIN_HEAT:
new_state = do_run_spin_heat();
break;
case RUN_SPIN_NO_HEAT:
new_state = do_run_spin_no_heat();
break;
case FULL_PAUSE:
new_state = do_full_pause();
break;
case REFRESH_SPIN_NO_HEAT:
new_state = do_refresh_spin_no_heat();
break;
case UNDEFINED:
default:
new_state = READY;
break;
}
/* Handle State transition */
if( new_state != state )
{
switch( new_state )
{
case READY:
enter_ready();
break;
case RUN:
enter_run();
break;
case RUN_SPIN_HEAT:
enter_run_spin_heat();
break;
case RUN_SPIN_NO_HEAT:
enter_run_spin_no_heat();
break;
case FULL_PAUSE:
enter_full_pause();
break;
case REFRESH_SPIN_NO_HEAT:
enter_refresh_spin_no_heat();
break;
default:
break;
}
state = new_state;
duration = 0;
}
button_up = 0;
for(int i=0;i
int button = digitalRead( BUTTON );
button_up |= ( button==0 && button_last == 1 );
button_last = button;
delay(100);
if( button_up ) {
break;
}
}
Serial.print(state);Serial.print("\t");
Serial.print(ntc1);Serial.print("\t");
Serial.print(ntc2);Serial.print("\t");
Serial.print(full);Serial.print("\t");
Serial.print(button_up);Serial.print("\n");
duration++;
}
És itt a hiba üzenet:
Kód: Egész kijelölése
sketch_oct29a.cpp: In function 'void lightPlay(int)':
sketch_oct29a:23: error: expected `;' before 'digitalWrite'
sketch_oct29a:23: error: expected `)' before ';' token
sketch_oct29a.cpp: At global scope:
sketch_oct29a:43: error: expected declaration before '}' token
A kód magába teljesen értelemszerű és tudnám is hogy hogyan módosítsam az én gépemhez, de sajnos ennél megakadtam.
Minden segítséget szívesen fogadok.
Köszönöm