#include "IRSensor.h"
#include "Turret.h"
#include "StepperButtonController.h"
#include "LoadBottleButton.h"
LoadBottleButton go(A3,1000);
void setup()
{
Serial.begin(9600);
Serial.println("Port Open");
}
void loop()
{
if(go.Read())
{
go.Monitor();
}
}
Oben ist der Hauptcode-Code nicht eine ganze Zeichenfolge auszudrucken und endet abrupt
#ifndef LoadBottleButton_cpp
#define LoadBottleButton_cpp
#include "Arduino.h"
#include "ScaleObject.h"
#include "LoadBottleButton.h"
#include "Turret.h"
#include "StepperButtonController.h"
ScaleObject* so;
Turret* tPointer;
LoadBottleButton::LoadBottleButton(int pin, int debounce):StepperButtonController(pin,debounce)
{
}
void LoadBottleButton::Monitor()
{
Serial.println("In Monitor");
while(tPointer->getTurret().BottleCenterState==false)
{
Serial.println("In Monitor While Loop");
tPointer->Start();
SETUP = true;
load = true;
unload = !so->getScale().Empty();
Serial.println(load);
Serial.println(unload);
Serial.println(!so->getScale().Empty());
if(unload)
{
unload=!so->getScale().Empty();
}
else if(load && !so->getScale().Empty())
{
load = !tPointer->BottleCentered();
}
if(!load && !unload && SETUP)
{
tPointer->Stop();
SETUP = false;
}
}
}
#endif
Und oben ist die LoadBottleButtonClass.cpp Datei.
#ifndef Turret_cpp
#define Turret_cpp
//#include "HX711.h"
#include "Turret.h"
#include "Arduino.h"
#include "StepperButtonController.h"
#include "ScaleObject.h"
#include "IRSensor.h"
//StepperButtonController Clear(9,1000);
void StepTurret();
Turret turret(2,3,4,StepTurret);
void StepTurret()
{
turret.Step();
}
ScaleObject* tso;
IRSensor* irs;
Turret::Turret()
{
}
Turret Turret::getTurret()
{
return turret;
}
Turret::Turret(int en, int dir, int clk, void(*stepFunction)()):stepper2(en,dir,clk,stepFunction)
{
tso->getScale().tare();
tso->getScale().set_gain(128);
tso->getScale().set_scale(-3483.4);
}
void Turret::SeekBottleCenter()
{
Start();
while(irs->IRState()==1)
{
Serial.println("High");
Serial.println(irs->IRState());
}
while(irs->IRState()==0)
{
Serial.println("Low");
}
}
bool Turret::BottleCentered()
{
return turret.BottleCenterState;
}
void Turret::ClearFunction()
{
wt = tso->getScale().get_units();
while(wt>5)
{
Serial.println("Clearing");
wt = tso->getScale().get_units();
Rotate(20);
}
}
#endif
Und oben ist die Turret.cpp-Datei.
Und oben ist die IRSensor.cpp
Datei. Also im Wesentlichen ich drücke die Go-Taste in meinem main
deklariert, ruft diese Schaltfläche Monitor in der Datei LoadBottleButton.cpp
, diese Methode verwendet einen Revolver Punkt, um Zugriff auf die Turret.cpp
Methoden und eine boolean
namens BottleCenterState
. Aber der Code wird nur so weit, es stoppt nach dem Drucken "In
" der Serial.println("In Monitor")
Linie. Warum das?
Versuchen Sie, ein minimales, vollständiges und überprüfbares Beispiel zu erstellen (http://stackoverflow.com/help/mcve), den minimalen Code, der zur Replizierung Ihres Problems benötigt wird. Wenn du das tust, ist es eine gute Chance, dass du es selbst herausfinden kannst. Wenn nicht, von einer einfachen Basis ausgehend, und dann Schritt für Schritt Funktionen und Funktionen hinzugefügt werden, um jeden Schritt auf dem Weg zu testen, hilft normalerweise Code, der funktioniert. –