Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 20:ec9d4f6a16ac
- Parent:
- 19:0356e54240cc
- Child:
- 21:5c6b3657c3cb
diff -r 0356e54240cc -r ec9d4f6a16ac main.cpp --- a/main.cpp Tue Sep 24 14:05:58 2019 +0000 +++ b/main.cpp Sat Oct 19 02:10:12 2019 +0000 @@ -6,13 +6,37 @@ #include "SB1602E.h" #include "yoda2.h" #include "TextLCD.h" +#include "DS3231.h" + + +DigitalOut relay4(RELAY_4); +DigitalOut relay3(RELAY_3); +DigitalOut relay2(RELAY_2); +DigitalOut relay1(RELAY_1); +DigitalIn din1(DIN1); +DigitalIn din2(DIN2); +DigitalIn din3(DIN3); +DigitalIn din4(DIN4); +DigitalIn din5(DIN5); +DigitalIn din6(DIN6); +DigitalIn din7(DIN7); +DigitalIn din8(DIN8); + +extern int moveMotor(int motornumber, int distance_mm, bool direction, bool freemove, bool gobackhome); +extern int moveMotor1(int distance_mm, bool direction, bool freemove, bool gobackhome); +extern int moveMotor2(int distance_mm, bool direction, bool freemove, bool gobackhome); +extern int moveMotor3(int distance_mm, bool direction, bool freemove, bool gobackhome); +extern int moveMotor3Until(bool direction, DigitalIn sensorpin); +extern DigitalOut motor3_pul; +extern DigitalOut motor3_en; +extern DigitalOut motor3_dir; EventFlags button_event_flags; EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); extern void eeprom_test(void); #ifdef YODA2 // I2C Communication -I2C i2c_lcd(PB_9, PB_8); // SDA, SCL +I2C i2c_lcd(LCD_SDA, LCD_SCL); // SDA, SCL TextLCD_I2C_N lcd(&i2c_lcd, ST7032_SA, TextLCD::LCD16x2, NC, TextLCD::ST7032_3V3); #endif #if 1 @@ -45,7 +69,7 @@ HX711 hx711(PA_14, PA_15); #endif #ifdef YODA2 -HX711 hx711(PA_1, PA_0); +HX711 hx711(SCALE_SDA, SCALE_SCL); #endif #endif extern void scaleCalibration(bool release_led); @@ -73,7 +97,7 @@ #ifdef LCD_1602 SB1602E lcd(D14, D15 ); // SDA, SCL #endif -CAN can1(PA_11, PA_12); // RD, TD +CAN can1(CAN_RD, CAN_TD); // RD, TD DigitalOut led1(LED1); // only one LED PA_5 DigitalOut led2(LED2); // only one LED PA_5 #endif @@ -136,7 +160,8 @@ if (button_status == 0) { printf("button0 down\r\n"); - scaleCalibration(true); +// scaleCalibration(true); + moveMotor3(100, true, true, false); button_status = button0.read(); if (button_status == 0) { @@ -329,7 +354,7 @@ } } #endif -// wait(0.2); + wait(0.2); } } #endif @@ -368,8 +393,49 @@ int loop = 0; int8_t ival; unsigned int can_id; + int distance = 0; +#if 0 + int hour; + int minute; + int second; + + int dayOfWeek; + int date; + int month; + int year; + DS3231 rtc_test(SDA, SCL); +// DS3231 rtc_test(PF_0, PF_1); + printf("\r\n\nDS3231 Library test program\r\nremi cormier 2012\r\n\n"); + + rtc_test.setI2Cfrequency(400000); + + //rtc_test.writeRegister(DS3231_Aging_Offset,0); // uncomment to set Aging Offset 1LSB = approx. 0.1 ppm according from datasheet = 0.05 ppm @ 21 °C from my measurments + + rtc_test.convertTemperature(); + + int reg=rtc_test.readRegister(DS3231_Aging_Offset); + if (reg>127) + {reg=reg-256;} + printf("Aging offset : %i\r\n",reg); + + printf("OSF flag : %i",rtc_test.OSF()); + printf("\r\n"); + + rtc_test.readDate(&date,&month,&year); + printf("date : %02i-%02i-%02i",date,month,year); + printf("\r\n"); + + rtc_test.setTime(19,48,45); // uncomment to set time + + rtc_test.readTime(&hour,&minute,&second); + printf("time : %02i:%02i:%02i",hour,minute,second); + printf("\r\n"); + + rtc_test.setDate(6,22,12,2012); // uncomment to set date + #endif + printf("\n\n*** RTOS starts ***\r\n"); - + // wait(1); #if 1 ep.read((uint32_t)EEPROM_DEVICE_ADDRESS_ADDRESS,device_address); @@ -385,11 +451,13 @@ // lcd.printf("ABCDEFGHI"); // Standard printf function, All ASCII characters will display #endif #ifdef YODA2 +#if 1 lcd.cls(); lcd.setContrast(31); lcd.setCursor(TextLCD::CurOff_BlkOff); lcd.setAddress(0,0); lcd.printf("Hello Yoda2!"); +#endif #endif #ifdef LCD_1602 // lcd.printf( 0, "Hello world!" ); // line# (0 or 1), string @@ -404,6 +472,8 @@ // can1.reset(); // can2.reset(); + +#if 1 printf("device_address =0x%08x \r\n", (device_address<<18)); can1.frequency(100000); can1.filter((device_address<<18), 0x1FFC0000, CANExtended, init_filter_handle); // 0x1FFC0000 to filter the last 18bits 0-17 @@ -414,6 +484,8 @@ //button0.mode(PullUp); // Activate pull-up can_receivethread.start(can_rxthread); can_handlethread.start(analyzePayload); +#endif + #endif button1.mode(PullUp); button2.mode(PullUp); @@ -454,9 +526,70 @@ mainmenu_thread.start(main_menu); #endif + moveMotor3(0, true, false, false); + wait(2); while(1) { - wait(2); -#if 1 + wait(2); +#if 0 + distance = 0; + distance = moveMotor3Until(true, din5); + printf("F distance=%d \r\n", distance); + printf("Sensors:\r\n"); + printf("%d %d %d %d \r\n", din1.read(), din2.read(), din3.read(), din4.read()); + printf("%d %d %d %d \r\n", din5.read(), din6.read(), din7.read(), din8.read()); + wait(1); + distance = 0; + distance = moveMotor3Until(false, din5); + printf("Sensors:\r\n"); + printf("%d %d %d %d \r\n", din1.read(), din2.read(), din3.read(), din4.read()); + printf("%d %d %d %d \r\n", din5.read(), din6.read(), din7.read(), din8.read()); + printf("B distance=%d \r\n", distance); +#endif +#if 0 + relay4 = 1; + printf("relay4 turn on\r\n"); + wait(2); + relay3 = 1; + printf("relay3 turn on\r\n"); + wait(2); + relay2 = 1; + printf("relay2 turn on\r\n"); + wait(2); + relay1 = 1; + printf("relay1 turn on\r\n"); + wait(2); + relay4 = 0; + relay3 = 0; + relay2 = 0; + relay1 = 0; +#endif +#if 0 + rtc_test.readDateTime(&dayOfWeek,&date,&month,&year,&hour,&minute,&second); + printf("date time : %i / %02i-%02i-%02i %02i:%02i:%02i",dayOfWeek,date,month,year,hour,minute,second); + printf("\r\n"); + + printf("temperature :%6.2f", rtc_test.readTemp()); + printf("\r\n"); +#endif +#if 0 + moveMotor3(850, true, false, false); + wait(5); + moveMotor3(850, false, false, false); +#endif +#if 0 + moveMotor1(100, true, false, false); + moveMotor2(100, true, false, false); + moveMotor3(100, true, false, false); + wait(1); + moveMotor1(150, true, false, false); + moveMotor2(150, true, false, false); + moveMotor3(150, true, false, false); + wait(1); + moveMotor1(250, false, false, false); + moveMotor2(250, false, false, false); + moveMotor3(250, false, false, false); +#endif +#if 1 if (!can_register_success) { can_txdata_frame.cmd = COMMAND_REGISTER;