Tick Tock Shield Arduino


bonjour
j ai acquis récemment ce kit pour "débutant" !!

j'ai téléchargé et installé la tick tock shield library

ensuite ce kit propose 7 programmes de demo toujours pour débutant

déjà le le démo 1 me pose d'énormes pbs mais en le modifiant avec mes connaissances je suis parvenu à le faire fonctionner

donc je m attaque au prog démo 2

code: [select]
/****************************************************************************/
//  demo function:use 3 buttons control 4 leds.
// note: k3-menu, k2-increase,k1-decrease
// power up: led off
// every time menu key pressed, status changes test_start
// to test_end or test_end test_start.
//  when starts, "increase" key can turn on 1 more led right left
// every time "increase" key pressed.
// the "decrease" key operation inverse process of "increase" key's.
//
//  author:frankie.chu
//  date:23 september, 2012
//
//  library free software; can redistribute and/or
//  modify under terms of gnu lesser general public
//  license published free software foundation; either
//  version 2.1 of license, or (at option) later version.
//
//  library distributed in hope useful,
//  without warranty; without implied warranty of
//  merchantability or fitness particular purpose.  see gnu
//  lesser general public license more details.
//
//  should have received copy of gnu lesser general public
//  license along library; if not, write free software
//  foundation, inc., 51 franklin st, fifth floor, boston, ma  02110-1301  usa
//
//  modified record:
//
/*******************************************************************************/

#include <timerone.h>

#define debug 1//comment out if don't need debug information

//-------pin definition of leds---------------//
#define led_clock_adjust 5
#define led_alarm_adjust 4
#define led_alarm_enable 3
#define led_brightness_adjust 2
//-------pin definition of keys---------------//
#define key_menu 11
#define key_up 10
#define key_down 9

//------the status of test---------------//
/*every time menu key pressed, toggle status between test_start , test_end */
/*when test_start, turns testing if key or down key pressed.*/
uint8_t status;
#define test_end   0 //the leds off
#define test_start 1 //the leds blink once per second
#define testing    2 //up key or down key can control leds

const int leds_pin[] =
{
led_brightness_adjust,
led_alarm_enable,
led_alarm_adjust,
led_clock_adjust
};
/*store id of highest ranked lit led.*/
/*eg:if highest ranked lit led led1, led_on_number 0.*/
/* if led2, led_on_number 1 , on.*/
int8_t led_on_number = -1;

/*toggle status between test_start , test_end.*/
/*if flag_test_start 0, status test_end.*/
/*otherwise, status test_start.*/
boolean flag_test_start;//the initial value 0

/*if flag_all_on 0,then turn on leds.*/
/*otherwise, turn off leds.*/
/*use when status test_start.*/
boolean flag_all_on;

void setup()
{
#ifdef debug//if debug message needed, start serial communication
serial.begin(9600);
#endif
/*initialization hardware*/
init_pins();
timer1.initialize(500000); // set timer of length 500000 microseconds
timer1.attachinterrupt( timer1isr ); // attach interrupt service routine timer1
}
void loop()
{
int16_t key_pressed = scankey();//poll status of keys
if(key_pressed == key_menu)
{
/*every time menu key pressed, toggle status between test_start , test_end */
flag_test_start = ~flag_test_start;
if(flag_test_start)status = test_start;
else status = test_end;
}
else if(key_pressed == key_up)
{
/*when testing, "up" key can turn on 1 more led right left*/
/*every time "up" key pressed. */
if(status == test_start)status = testing;
if(status == testing)turnonmoreled();
}
else if(key_pressed == key_down)
{
/*when testing, "down" key can turn off 1 more led left right*/
/*every time "down" key pressed. */
if(status == test_start)status = testing;
if(status == testing)turnoffmoreled();
}
/*if key has been pressed, wait 200ms*/
if(key_pressed > 0)delay(200);
}
/*initialization hardware,and should called first*/
void init_pins()
{
/*set keys inputs , define initial status high*/
pinmode(key_menu, input);
digitalwrite(key_menu, high);
pinmode(key_up, input);
digitalwrite(key_up, high);
pinmode(key_down, input);
digitalwrite(key_down, high);
/*define pin mode of leds*/
pinmode(led_clock_adjust, output);
pinmode(led_alarm_adjust, output);
pinmode(led_brightness_adjust, output);
pinmode(led_alarm_enable, output);
turnoffall();//turn off leds first.
}
/*turn on 1 led*/
inline void turnon(int pinled)
{
digitalwrite(pinled, high);
}
/*turn off 1 led*/
inline void turnoff(int pinled)
{
digitalwrite(pinled, low);
}
/*turn on leds*/
inline void turnonall()
{
turnon(led_clock_adjust);
turnon(led_alarm_adjust);
turnon(led_brightness_adjust);
turnon(led_alarm_enable);
}
/*turn off leds*/
inline void turnoffall()
{
turnoff(led_clock_adjust);
turnoff(led_alarm_adjust);
turnoff(led_brightness_adjust);
turnoff(led_alarm_enable);
}

/*turn on 1 more led*/
void turnonmoreled()
{
if(led_on_number < 3) //when not leds on
{
led_on_number ++;
turnon(leds_pin[led_on_number]);
for(byte = led_on_number + 1;i < 4;i ++)
turnoff(leds_pin[i]);//make sure higher ranked leds off
}
}

/*turn off 1 more led*/
void turnoffmoreled()
{
if((led_on_number > 0) || (led_on_number == 0))//when not leds off
{
turnoff(leds_pin[led_on_number]);
led_on_number --;
}
}

/*scan keys , know 1 pressed*/
int16_t scankey()
{
int16_t pin_number = -1;//define non-existent pin number
if(digitalread(key_menu) == low)
{
delay(20);
if(digitalread(key_menu) == low)
{
pin_number = key_menu;
}
#ifdef debug //print out message on serial monitor
serial.println("key_menu pressed");
#endif

}
else if(digitalread(key_up) == low)
{
delay(20);
if(digitalread(key_up) == low)
{
pin_number = key_up;
}
#ifdef debug
serial.println("key_up pressed");
#endif
}
else if(digitalread(key_down) == low)
{
delay(20);
if(digitalread(key_down) == low)
{
pin_number = key_down;
}
#ifdef debug
serial.println("key_down pressed");
#endif
}
return pin_number;
}
/*timer 1 interrupt service routine*/
void timer1isr()
{
if(status == test_start)
{
/*if start, leds blink once second.*/
flag_all_on = ~flag_all_on;
if(flag_all_on)
{
led_on_number = 3;//no more led turn on
turnonall();
}
else
{
led_on_number = -1;//no more led turn off
turnoffall();
}
}
else if(status == test_end)
{
turnoffall();
led_on_number = -1;
}
}



mais la lorsque je veux le compiler j obtiens des message d'erreur

arduino : 1.7.10 (windows 7), carte : "arduino uno"

c:\program files (x86)\arduino\hardware\tools\avr\bin\avr-ar: unable rename 'c:\users\alju\appdata\local\temp\build1615483783681806320.tmp/core.a'; reason: file exists

erreur lors de la compilation.

c:\users\alju\appdata\local\temp\build1615483783681806320.tmp/core.a(wiring.c.o): in function `delay':

c:\program files (x86)\arduino\hardware\arduino\avr\cores\arduino/wiring.c:114: undefined reference `yield'

collect2.exe: error: ld returned 1 exit status

erreur lors de la compilation.


je trouve aussi ce programme très compliqué pour un débutant


donc si qq utilise ce shield pourrai me donner qqs conseils


cordialement


bonjour

je suis étonné que vraiment personne n'utilise ce shield

cordialement chriiss62


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Tick Tock Shield Arduino


arduino

Comments

Popular posts from this blog

DHT11 Time out error using v0.4.1library

Sketch upload fails with Java error (___REMOVE___/bin/avrdude)!

Arduino Uno + KTY81/210 temperature sensor