RAM error

Dependencies:   F746_GUI mbed StepperMotorX2Y

Committer:
Abdel64
Date:
Wed Nov 11 11:10:46 2020 +0000
Revision:
0:fda2fbc0d37b
Child:
1:39faa12c5a52
Classe fille steppers OK

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Abdel64 0:fda2fbc0d37b 1 //-----------------------------------------------------------------------
Abdel64 0:fda2fbc0d37b 2 // GuiBase とその派生クラスのデモプログラム
Abdel64 0:fda2fbc0d37b 3 // Demo program for GuiBase class and its derivertive classes
Abdel64 0:fda2fbc0d37b 4 //
Abdel64 0:fda2fbc0d37b 5 // GuiBase, Button, ButtonGroup, Label, NumericLabel, BlinkLabel,
Abdel64 0:fda2fbc0d37b 6 // SeekBar, SeekbarGroup, NumericUpDown
Abdel64 0:fda2fbc0d37b 7 //
Abdel64 0:fda2fbc0d37b 8 // <インポートしたライブラリのリビジョン>
Abdel64 0:fda2fbc0d37b 9 // F746_GUI 33
Abdel64 0:fda2fbc0d37b 10 // mbed 161
Abdel64 0:fda2fbc0d37b 11 //
Abdel64 0:fda2fbc0d37b 12 // 2018/03/12, Copyright (c) 2018 MIKAMI, Naoki
Abdel64 0:fda2fbc0d37b 13 //-----------------------------------------------------------------------
Abdel64 0:fda2fbc0d37b 14
Abdel64 0:fda2fbc0d37b 15 #include "F746_GUI.hpp"
Abdel64 0:fda2fbc0d37b 16 #include "Stepper.h"
Abdel64 0:fda2fbc0d37b 17
Abdel64 0:fda2fbc0d37b 18 DigitalIn FourcheLibre(PA_8);
Abdel64 0:fda2fbc0d37b 19 int speed_start = 10;
Abdel64 0:fda2fbc0d37b 20 int speed_max = 1000;
Abdel64 0:fda2fbc0d37b 21
Abdel64 0:fda2fbc0d37b 22 int main()
Abdel64 0:fda2fbc0d37b 23 {
Abdel64 0:fda2fbc0d37b 24 // ******** INIT GUI *********
Abdel64 0:fda2fbc0d37b 25 NumericLabel<int> bStart(380, 240, "Wait for Start", Label::LEFT, Font12, LCD_COLOR_MAGENTA);
Abdel64 0:fda2fbc0d37b 26
Abdel64 0:fda2fbc0d37b 27 Button Start(250, 220, 120, 40, "START", Font12,
Abdel64 0:fda2fbc0d37b 28 GuiBase::ENUM_TEXT, GuiBase::ENUM_BACK,
Abdel64 0:fda2fbc0d37b 29 LCD_COLOR_DARKGREEN, LCD_COLOR_GREEN);
Abdel64 0:fda2fbc0d37b 30
Abdel64 0:fda2fbc0d37b 31 Label stepY(130, 20, "STEPPERs Y", Label::CENTER, Font16);
Abdel64 0:fda2fbc0d37b 32 ButtonGroup bDir_Y(50, 70, 80, 50, 3, (string[]){"^","v","Pause"}, 0, 0, 2);
Abdel64 0:fda2fbc0d37b 33 bDir_Y.TouchedColor(2);
Abdel64 0:fda2fbc0d37b 34 NumericLabel<int> bDir_Y_label(130, 35, "", Label::CENTER , Font12);
Abdel64 0:fda2fbc0d37b 35 bDir_Y_label.Draw("Pause",1);
Abdel64 0:fda2fbc0d37b 36 NumericLabel<int> bCount_Y_label(130, 50, "", Label::CENTER , Font12);
Abdel64 0:fda2fbc0d37b 37 bCount_Y_label.Draw("Not started",1);
Abdel64 0:fda2fbc0d37b 38
Abdel64 0:fda2fbc0d37b 39 Label stepX(320, 20, "STEPPER X", Label::CENTER, Font16);
Abdel64 0:fda2fbc0d37b 40 ButtonGroup bDir_X(260, 70, 80, 50, 3, (string[]){"<<",">>","Pause"}, 0, 0, 2);
Abdel64 0:fda2fbc0d37b 41 bDir_X.TouchedColor(2);
Abdel64 0:fda2fbc0d37b 42 NumericLabel<int> bDir_X_label(320, 35, "", Label::CENTER , Font12);
Abdel64 0:fda2fbc0d37b 43 bDir_X_label.Draw("Pause",1);
Abdel64 0:fda2fbc0d37b 44 NumericLabel<int> bCount_X_label(320, 50, "", Label::CENTER , Font12);
Abdel64 0:fda2fbc0d37b 45 bCount_X_label.Draw("Not started",1);
Abdel64 0:fda2fbc0d37b 46
Abdel64 0:fda2fbc0d37b 47 SeekBar barSpeed(20, 250, 200, 0, speed_max, speed_start, "0", "", "1000");
Abdel64 0:fda2fbc0d37b 48 NumericLabel<int> barSpeed_legend(110, 205, "Speed : 10", Label::CENTER , Font12);
Abdel64 0:fda2fbc0d37b 49 barSpeed_legend.Draw("Speed : %d",barSpeed.GetIntValue());
Abdel64 0:fda2fbc0d37b 50
Abdel64 0:fda2fbc0d37b 51 // ******** INIT STEPPER ******
Abdel64 0:fda2fbc0d37b 52 // stepper(PinName _en, PinName _stepPin, PinName dirG, PinName dirD)
Abdel64 0:fda2fbc0d37b 53 steppers Steppers_Y (PB_8,PB_9,PB_14,PB_15);
Abdel64 0:fda2fbc0d37b 54 Steppers_Y.disable();
Abdel64 0:fda2fbc0d37b 55 stepper Stepper_X (PB_4,PC_6,PC_7);
Abdel64 0:fda2fbc0d37b 56 Stepper_X.disable();
Abdel64 0:fda2fbc0d37b 57 int Y_en, Y_dir, X_en, X_dir, Y_speed, X_speed, Y_count, X_count ;
Abdel64 0:fda2fbc0d37b 58 Y_speed = X_speed = speed_start;
Abdel64 0:fda2fbc0d37b 59 Y_en = X_en = 0;
Abdel64 0:fda2fbc0d37b 60 Y_count = X_count = 0;
Abdel64 0:fda2fbc0d37b 61
Abdel64 0:fda2fbc0d37b 62 int first = 1;
Abdel64 0:fda2fbc0d37b 63 int num;
Abdel64 0:fda2fbc0d37b 64
Abdel64 0:fda2fbc0d37b 65 // ***** WAIT FOR START *****
Abdel64 0:fda2fbc0d37b 66 while(!Start.Touched()){
Abdel64 0:fda2fbc0d37b 67 if (first){
Abdel64 0:fda2fbc0d37b 68 bStart.Draw("Wait for Start",0);
Abdel64 0:fda2fbc0d37b 69 first = 0;
Abdel64 0:fda2fbc0d37b 70 }
Abdel64 0:fda2fbc0d37b 71 }
Abdel64 0:fda2fbc0d37b 72
Abdel64 0:fda2fbc0d37b 73 // ******* RUN *****
Abdel64 0:fda2fbc0d37b 74 // *****************
Abdel64 0:fda2fbc0d37b 75 first = 1;
Abdel64 0:fda2fbc0d37b 76
Abdel64 0:fda2fbc0d37b 77 while (true)
Abdel64 0:fda2fbc0d37b 78 {
Abdel64 0:fda2fbc0d37b 79
Abdel64 0:fda2fbc0d37b 80 if (first){
Abdel64 0:fda2fbc0d37b 81 bStart.Draw("Started",1);
Abdel64 0:fda2fbc0d37b 82 first = 0;
Abdel64 0:fda2fbc0d37b 83 }
Abdel64 0:fda2fbc0d37b 84
Abdel64 0:fda2fbc0d37b 85 if (barSpeed.Slide()){
Abdel64 0:fda2fbc0d37b 86 Y_speed = barSpeed.GetIntValue();
Abdel64 0:fda2fbc0d37b 87 X_speed = Y_speed;
Abdel64 0:fda2fbc0d37b 88 barSpeed_legend.Draw("Speed : %d",barSpeed.GetIntValue());
Abdel64 0:fda2fbc0d37b 89 }
Abdel64 0:fda2fbc0d37b 90
Abdel64 0:fda2fbc0d37b 91 if (bDir_Y.GetTouchedNumber(num)){
Abdel64 0:fda2fbc0d37b 92 switch (num)
Abdel64 0:fda2fbc0d37b 93 {
Abdel64 0:fda2fbc0d37b 94 case 0: Y_en = 1;
Abdel64 0:fda2fbc0d37b 95 Y_dir = 1;
Abdel64 0:fda2fbc0d37b 96 bDir_Y_label.Draw("Avant (dir:%d)",Y_dir);
Abdel64 0:fda2fbc0d37b 97 break;
Abdel64 0:fda2fbc0d37b 98 case 1: Y_en = 1;
Abdel64 0:fda2fbc0d37b 99 Y_dir = 0;
Abdel64 0:fda2fbc0d37b 100 bDir_Y_label.Draw("Arriere (dir:%d)",Y_dir);
Abdel64 0:fda2fbc0d37b 101 break;
Abdel64 0:fda2fbc0d37b 102 case 2: Y_en = 0;
Abdel64 0:fda2fbc0d37b 103 bDir_Y_label.Draw("Pause",0);
Abdel64 0:fda2fbc0d37b 104
Abdel64 0:fda2fbc0d37b 105 break;
Abdel64 0:fda2fbc0d37b 106 }
Abdel64 0:fda2fbc0d37b 107 }
Abdel64 0:fda2fbc0d37b 108
Abdel64 0:fda2fbc0d37b 109 if (bDir_X.GetTouchedNumber(num)){
Abdel64 0:fda2fbc0d37b 110 switch (num)
Abdel64 0:fda2fbc0d37b 111 {
Abdel64 0:fda2fbc0d37b 112 case 0: X_en = 1;
Abdel64 0:fda2fbc0d37b 113 X_dir = 1;
Abdel64 0:fda2fbc0d37b 114 bDir_X_label.Draw("Gauche (dir:%d)",X_dir);
Abdel64 0:fda2fbc0d37b 115 break;
Abdel64 0:fda2fbc0d37b 116 case 1: X_en = 1;
Abdel64 0:fda2fbc0d37b 117 X_dir = 0;
Abdel64 0:fda2fbc0d37b 118 bDir_X_label.Draw("Droite (dir:%d)",X_dir);
Abdel64 0:fda2fbc0d37b 119 break;
Abdel64 0:fda2fbc0d37b 120 case 2: X_en = 0;
Abdel64 0:fda2fbc0d37b 121 bDir_X_label.Draw("Pause",0);
Abdel64 0:fda2fbc0d37b 122
Abdel64 0:fda2fbc0d37b 123 break;
Abdel64 0:fda2fbc0d37b 124 }
Abdel64 0:fda2fbc0d37b 125 }
Abdel64 0:fda2fbc0d37b 126
Abdel64 0:fda2fbc0d37b 127 if (FourcheLibre){
Abdel64 0:fda2fbc0d37b 128
Abdel64 0:fda2fbc0d37b 129 bStart.Draw("Ready",0);
Abdel64 0:fda2fbc0d37b 130
Abdel64 0:fda2fbc0d37b 131 if (Y_en){
Abdel64 0:fda2fbc0d37b 132 Steppers_Y.enable();
Abdel64 0:fda2fbc0d37b 133 Steppers_Y.step(Y_dir,Y_speed);
Abdel64 0:fda2fbc0d37b 134 Y_count++ ;
Abdel64 0:fda2fbc0d37b 135 } else {
Abdel64 0:fda2fbc0d37b 136 Steppers_Y.disable();
Abdel64 0:fda2fbc0d37b 137 Y_count = 0;
Abdel64 0:fda2fbc0d37b 138 }
Abdel64 0:fda2fbc0d37b 139
Abdel64 0:fda2fbc0d37b 140 if ((X_en) && (X_count < 4000)){
Abdel64 0:fda2fbc0d37b 141 Stepper_X.enable();
Abdel64 0:fda2fbc0d37b 142 Stepper_X.step(X_dir,X_speed);
Abdel64 0:fda2fbc0d37b 143 X_count++ ;
Abdel64 0:fda2fbc0d37b 144 } else {
Abdel64 0:fda2fbc0d37b 145 Stepper_X.disable();
Abdel64 0:fda2fbc0d37b 146 X_count = 0;
Abdel64 0:fda2fbc0d37b 147 }
Abdel64 0:fda2fbc0d37b 148
Abdel64 0:fda2fbc0d37b 149 } else {
Abdel64 0:fda2fbc0d37b 150 Steppers_Y.disable();
Abdel64 0:fda2fbc0d37b 151 Stepper_X.disable();
Abdel64 0:fda2fbc0d37b 152 bStart.Draw("Fourche !",0);
Abdel64 0:fda2fbc0d37b 153 }
Abdel64 0:fda2fbc0d37b 154 bCount_X_label.Draw("Count : %d",X_count);
Abdel64 0:fda2fbc0d37b 155 bCount_Y_label.Draw("Count : %d",Y_count);
Abdel64 0:fda2fbc0d37b 156 }
Abdel64 0:fda2fbc0d37b 157 }
Abdel64 0:fda2fbc0d37b 158
Abdel64 0:fda2fbc0d37b 159
Abdel64 0:fda2fbc0d37b 160