瀏覽代碼

initial commit

master
gituser 1 年之前
父節點
當前提交
7381aeb1ca
共有 8 個檔案被更改,包括 485 行新增0 行删除
  1. 100
    0
      .cproject
  2. 1
    0
      .gitignore
  3. 55
    0
      .project
  4. 11
    0
      .settings/language.settings.xml
  5. 21
    0
      .sproject
  6. 265
    0
      FSRemotePowerSwitch.ino
  7. 30
    0
      sloeber.ino.cpp
  8. 2
    0
      spec.d

+ 100
- 0
.cproject 查看文件

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="io.sloeber.core.sketch.0">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="io.sloeber.core.sketch.0" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" cleanCommand="rm -f" description="" id="io.sloeber.core.sketch.0" name="Release" parent="io.sloeber.core.configuration.release">
<folderInfo id="io.sloeber.core.sketch.0." name="/" resourcePath="">
<toolChain id="io.sloeber.core.toolChain.release.1203424416" name="Arduino Toolchain (Sloeber edition)" superClass="io.sloeber.core.toolChain.release">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="io.sloeber.targetplatform.1601321437" name="Arduino Target" osList="all" superClass="io.sloeber.targetplatform"/>
<builder buildPath="${workspace_loc:/FSRemotePowerSwitch}/Release" id="io.sloeber.sketch.builder.1196383202" keepEnvironmentInBuildfile="false" name="Arduino sketch builder" parallelBuildOn="false" superClass="io.sloeber.sketch.builder"/>
<tool id="io.sloeber.tool.sketch.compiler.cpp.1826714851" name="Arduino C++ Compiler" superClass="io.sloeber.tool.sketch.compiler.cpp">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.cpp.sketch.option.incpath.1592749907" name="Include Paths (-I)" superClass="io.sloeber.compiler.cpp.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FSRemotePowerSwitch/core/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FSRemotePowerSwitch/core/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FSRemotePowerSwitch/libraries/ArduinoJson/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FSRemotePowerSwitch/libraries/AccelStepper/src}&quot;"/>
</option>
<inputType id="io.sloeber.compiler.cpp.sketch.input.1774730493" name="CPP source files" superClass="io.sloeber.compiler.cpp.sketch.input"/>
</tool>
<tool id="io.sloeber.tool.compiler.c.1228564326" name="Arduino C Compiler" superClass="io.sloeber.tool.compiler.c">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.c.sketch.option.incpath.1887998313" name="Include Paths (-I)" superClass="io.sloeber.compiler.c.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FSRemotePowerSwitch/core/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FSRemotePowerSwitch/core/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FSRemotePowerSwitch/libraries/ArduinoJson/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FSRemotePowerSwitch/libraries/AccelStepper/src}&quot;"/>
</option>
<inputType id="io.sloeber.compiler.c.sketch.input.1528033502" name="C Source Files" superClass="io.sloeber.compiler.c.sketch.input"/>
</tool>
<tool id="io.sloeber.tool.sketch.compiler.s.579855230" name="Arduino Assembler" superClass="io.sloeber.tool.sketch.compiler.s">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.asm.sketch.option.incpath.1692763518" name="Include Paths (-I)" superClass="io.sloeber.compiler.asm.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FSRemotePowerSwitch/core/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FSRemotePowerSwitch/core/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FSRemotePowerSwitch/libraries/ArduinoJson/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FSRemotePowerSwitch/libraries/AccelStepper/src}&quot;"/>
</option>
<inputType id="io.sloeber.compiler.S.sketch.input.67304239" name="Assembly source files" superClass="io.sloeber.compiler.S.sketch.input"/>
</tool>
<tool id="io.sloeber.tool.ar.2137607011" name="Arduino archiver" superClass="io.sloeber.tool.ar"/>
<tool id="io.sloeber.tool.combine.1817061304" name="Arduino combiner" superClass="io.sloeber.tool.combine"/>
<tool id="io.sloeber.tool.objcopy.eep.1918189120" name="Arduino tool objcopy command" superClass="io.sloeber.tool.objcopy.eep"/>
<tool id="io.sloeber.tool.size.1599481882" name="Arduino tool Print Size" superClass="io.sloeber.tool.size"/>
</toolChain>
</folderInfo>
<folderInfo id="io.sloeber.core.sketch.0.libraries/**/._*" resourcePath="libraries/**/._*">
<toolChain id="io.sloeber.core.toolChain5.331292459" superClass="io.sloeber.core.toolChain5">
<targetPlatform id="io.sloeber.core.sketch.0.libraries/**/._*.1217115483" name=""/>
</toolChain>
</folderInfo>
<folderInfo id="io.sloeber.core.sketch.0.libraries/?*/**/test*/**" resourcePath="libraries/?*/**/test*/**">
<toolChain id="io.sloeber.core.toolChain3.514991434" superClass="io.sloeber.core.toolChain3">
<targetPlatform id="io.sloeber.core.sketch.0.libraries/?*/**/test*/**.1259847971" name=""/>
</toolChain>
</folderInfo>
<folderInfo id="io.sloeber.core.sketch.0.libraries/?*/**/?xtras/**" resourcePath="libraries/?*/**/?xtras/**">
<toolChain id="io.sloeber.core.toolChain2.2060562449" superClass="io.sloeber.core.toolChain2">
<targetPlatform id="io.sloeber.core.sketch.0.libraries/?*/**/?xtras/**.1662694404" name=""/>
</toolChain>
</folderInfo>
<folderInfo id="io.sloeber.core.sketch.0.libraries/?*/**/?xamples/**" resourcePath="libraries/?*/**/?xamples/**">
<toolChain id="io.sloeber.core.toolChain1.128336890" superClass="io.sloeber.core.toolChain1">
<targetPlatform id="io.sloeber.core.sketch.0.libraries/?*/**/?xamples/**.91341827" name=""/>
</toolChain>
</folderInfo>
<folderInfo id="io.sloeber.core.sketch.0.libraries/?*/**/third-party/**" resourcePath="libraries/?*/**/third-party/**">
<toolChain id="io.sloeber.core.toolChain4.1404350963" superClass="io.sloeber.core.toolChain4">
<targetPlatform id="io.sloeber.core.sketch.0.libraries/?*/**/third-party/**.1593271477" name=""/>
</toolChain>
</folderInfo>
<folderInfo id="io.sloeber.core.sketch.0.libraries/?*/utility/*/*" resourcePath="libraries/?*/utility/*/*">
<toolChain id="io.sloeber.core.toolChain6.2111493700" superClass="io.sloeber.core.toolChain6">
<targetPlatform id="io.sloeber.core.sketch.0.libraries/?*/utility/*/*.1087276154" name=""/>
</toolChain>
</folderInfo>
<sourceEntries>
<entry excluding="libraries/?*/**/?xamples/**|libraries/?*/**/?xtras/**|libraries/?*/**/test*/**|libraries/?*/**/third-party/**|libraries/**/._*|libraries/?*/utility/*/*" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="FSRemotePowerSwitch.io.sloeber.core.sketch.1960264148" name="Arduino sketch" projectType="io.sloeber.core.sketch"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="refreshScope"/>
</cproject>

+ 1
- 0
.gitignore 查看文件

@@ -0,0 +1 @@
/Release

+ 55
- 0
.project 查看文件

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>FSRemotePowerSwitch</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>io.sloeber.core.inoToCpp</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>io.sloeber.arduinonature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
<linkedResources>
<link>
<name>core/core</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/cores/arduino</locationURI>
</link>
<link>
<name>core/variant</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/variants/eightanaloginputs</locationURI>
</link>
<link>
<name>libraries/AccelStepper</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/libraries/AccelStepper/1.61.0</locationURI>
</link>
<link>
<name>libraries/ArduinoJson</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/libraries/ArduinoJson/7.0.2</locationURI>
</link>
</linkedResources>
</projectDescription>

+ 11
- 0
.settings/language.settings.xml 查看文件

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="io.sloeber.core.sketch.0" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider class="io.sloeber.core.toolchain.ArduinoLanguageProvider" console="false" env-hash="1759918841576165527" id="io.sloeber.languageSettingsProvider" keep-relative-paths="false" name="Arduino Compiler Settings" parameter="${COMMAND} -E -P -v -dD -D__IN_ECLIPSE__ &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
</project>

+ 21
- 0
.sproject 查看文件

@@ -0,0 +1,21 @@
Config.Release.board.BOARD.ID=nano
Config.Release.board.BOARD.MENU.CpuFrequency=80
Config.Release.board.BOARD.MENU.DebugLevel=debug
Config.Release.board.BOARD.MENU.FlashFreq=80
Config.Release.board.BOARD.MENU.FlashSize=4M1M
Config.Release.board.BOARD.MENU.UploadSpeed=115200
Config.Release.board.BOARD.MENU.cpu=atmega328old
Config.Release.board.BOARD.TXT=${SLOEBER_HOME}/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/boards.txt
Config.Release.board.PROGRAMMER.NAME=Default
Config.Release.board.UPLOAD.PORT=COM3
Config.Release.compile.sloeber.extra.all=
Config.Release.compile.sloeber.extra.archive=
Config.Release.compile.sloeber.extra.assembly=
Config.Release.compile.sloeber.extra.c.compile=
Config.Release.compile.sloeber.extra.compile=
Config.Release.compile.sloeber.extra.cpp.compile=
Config.Release.compile.sloeber.extra.link=
Config.Release.compile.sloeber.size.switch=false
Config.Release.compile.sloeber.warning_level=NONE
Config.Release.compile.sloeber.warning_level.custom=
Config.Release.other.IS_VERSION_CONTROLLED=false

+ 265
- 0
FSRemotePowerSwitch.ino 查看文件

@@ -0,0 +1,265 @@
/*
* FSRemotePowerSwitch
*
* Allows to control an Arduino to power up a device.
*
* A send over cmd from a PC will set a digital pin to high, which
* switches relay to close a 230V AC circuit.
*
*
*/

#include "Arduino.h"
#include <ArduinoJson.h>
#include <AccelStepper.h>
#include <HardwareSerial.h>
#include <math.h>

const char *Version = "V1.1.0";

const String CMD_SENDER_PC = "FSRemotePowerSwitch_PC";
const String CMD_SENDER_AN = "FSRemotePowerSwitch_AN";
const String CMD_VER = "Version";
const String CMD_STATUS_RELAY = "Status_Relay";
const String CMD_POWER_RELAY = "Power_Relay";
const String CMD_STATUS_CAM = "Status_Cam";
const String CMD_POWER_CAM = "Power_Cam";
const String CMD_AZIMUT_CAM = "Azimut_Cam";
const String CMD_ACT_AZIMUT_CAM = "Actual_Azimut_Cam";
const String CMD_ZERO_CAM = "Zero_Cam";
const String CMD_VELOCITY_CAM = "Velocity_Cam";
const String CMD_VAL_ON = "On";
const String CMD_VAL_OFF = "Off";
const String CMD_VELOCITY_SLOW = "Slow";
const String CMD_VELOCITY_FAST = "Fast";

const int PWR_RELAY_PIN = 5;
const int PWR_CAM_PIN = 6;

String stepperVelocity;

JsonDocument msg;

// Define motor interface type
#define motorInterfaceType AccelStepper::MotorInterfaceType::HALF4WIRE

// Creates an instance
AccelStepper stepper(motorInterfaceType, 8, 10, 9, 11);

// The setup function runs once when you press reset or power the board
void setup() {
Serial.begin(9600);
pinMode(PWR_RELAY_PIN, OUTPUT);
pinMode(PWR_CAM_PIN, OUTPUT);

digitalWrite(PWR_RELAY_PIN, HIGH);
digitalWrite(PWR_CAM_PIN, HIGH);

setSlowStepperVelocity(); // Slow: Acc: 500 / Fast: MaxSpeed: 1000
// Slow: Acc: 200 / Fast: MaxSpeed: 500
}

/* The loop function runs over and and checks the serial port for receiving a Json of following format:
*
* JSON for FSRemotePowerSwitch
*
* {
* "sender": "FSRemotePowerSwitch_PC" or "FSRemotePowerSwitch_AN",
* "cmd": "Version" or "Status_Relay" or "Power_Relay" or "Status_Cam" or "Power_Cam" or "Azimut_Cam" or "Zero_Cam",
* "val": "V0.0.1" or "On"/"Off" or "0"
* }
*
*/

void loop() {

if (Serial.available() > 0) {

moveStepper();

String message = readSerialData();

// Deserialize the JSON document
DeserializationError error = deserializeJson(msg, message);
// Test if parsing succeeds.
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.print(message);
Serial.println(error.f_str());
return;
}

message = "";
String sdr = msg["Sender"];
String cmd = msg["Cmd"];
String val = msg["Val"];

if (sdr == CMD_SENDER_PC && cmd == CMD_VER) {
sendVersion();

} else if (sdr == CMD_SENDER_PC && cmd == CMD_POWER_RELAY) {

if (val == CMD_VAL_ON) {
digitalWrite(PWR_RELAY_PIN, LOW);
} else if (val == CMD_VAL_OFF) {
digitalWrite(PWR_RELAY_PIN, HIGH);
}
if (digitalRead(PWR_RELAY_PIN) == LOW) {
moveStepper();
sendRelayPowerStatus(CMD_VAL_ON);
} else {
moveStepper();
sendRelayPowerStatus(CMD_VAL_OFF);
}

} else if (sdr == CMD_SENDER_PC && cmd == CMD_STATUS_RELAY) {

if (digitalRead(PWR_RELAY_PIN) == LOW) {
moveStepper();
sendRelayPowerStatus(CMD_VAL_ON);
} else {
moveStepper();
sendRelayPowerStatus(CMD_VAL_OFF);
}

} else if (sdr == CMD_SENDER_PC && cmd == CMD_POWER_CAM) {

if (val == CMD_VAL_ON) {
digitalWrite(PWR_CAM_PIN, HIGH);
stepper.move(10);
moveStepper();
} else if (val == CMD_VAL_OFF) {
moveStepper();
digitalWrite(PWR_CAM_PIN, LOW);
}
if (digitalRead(PWR_CAM_PIN) == HIGH) {
moveStepper();
sendCamPowerStatus(CMD_VAL_ON);
} else {
moveStepper();
sendCamPowerStatus(CMD_VAL_OFF);
}

} else if (sdr == CMD_SENDER_PC && cmd == CMD_STATUS_CAM) {

if (digitalRead(PWR_CAM_PIN) == HIGH) {
moveStepper();
sendCamPowerStatus(CMD_VAL_ON);
} else {
moveStepper();
sendCamPowerStatus(CMD_VAL_OFF);
}

} else if (sdr == CMD_SENDER_PC && cmd == CMD_ZERO_CAM) {
stepper.setCurrentPosition(0);
sendZeroCamStatus(String(stepper.currentPosition()));

} else if (sdr == CMD_SENDER_PC && cmd == CMD_VELOCITY_CAM) {
if (val.equals(CMD_VELOCITY_FAST)) {
setFastStepperVelocity();
} else if (val.equals(CMD_VELOCITY_SLOW)) {
setSlowStepperVelocity();
}
sendCamVelocityStatus();

} else if (sdr == CMD_SENDER_PC && cmd == CMD_ACT_AZIMUT_CAM) {
int actAzi = round(stepper.currentPosition() / (4076.0 / 360.0) * -1);
sendCamActAzimut(String(actAzi));

} else if (sdr == CMD_SENDER_PC && cmd == CMD_AZIMUT_CAM) {
if (digitalRead(PWR_CAM_PIN) == HIGH) {
long target = round((4076.0 / 360.0) * val.toDouble() * -1);
stepper.moveTo(target);
stepper.run();
}
}

}

moveStepper();
}

void moveStepper() {
if (stepper.distanceToGo() != 0) {
// Move the motor one step
stepper.run();
}
}

String readSerialData() {
String msg = "";
String data = "";

while (Serial.available() > 0) {
data = Serial.readString();
msg += data;
//delay(50);
}

return msg;
}

void setFastStepperVelocity() {
stepperVelocity = CMD_VELOCITY_FAST;
stepper.setCurrentPosition(stepper.currentPosition());
stepper.setMaxSpeed(1000); // Slow: 500 / Fast: 1000
stepper.setAcceleration(500); // Slow: 200 / Fast: 500
stepper.setSpeed(1000);
}

void setSlowStepperVelocity() {
stepperVelocity = CMD_VELOCITY_SLOW;
stepper.setCurrentPosition(stepper.currentPosition());
stepper.setMaxSpeed(500); // Slow: 500 / Fast: 1000
stepper.setAcceleration(200); // Slow: 200 / Fast: 500
stepper.setSpeed(500);
}


void sendVersion() {
msg["Sender"] = CMD_SENDER_AN;
msg["Cmd"] = CMD_VER;
msg["Val"] = Version;

serializeJson(msg, Serial);
}

void sendRelayPowerStatus(String status) {
msg["Sender"] = CMD_SENDER_AN;
msg["Cmd"] = CMD_STATUS_RELAY;
msg["Val"] = status;

serializeJson(msg, Serial);
}

void sendCamPowerStatus(String status) {
msg["Sender"] = CMD_SENDER_AN;
msg["Cmd"] = CMD_STATUS_CAM;
msg["Val"] = status;

serializeJson(msg, Serial);
}

void sendZeroCamStatus(String val) {
msg["Sender"] = CMD_SENDER_AN;
msg["Cmd"] = CMD_ZERO_CAM;
msg["Val"] = val;

serializeJson(msg, Serial);
}

void sendCamActAzimut(String val) {
msg["Sender"] = CMD_SENDER_AN;
msg["Cmd"] = CMD_ACT_AZIMUT_CAM;
msg["Val"] = val;

serializeJson(msg, Serial);
}

void sendCamVelocityStatus() {
msg["Sender"] = CMD_SENDER_AN;
msg["Cmd"] = CMD_VELOCITY_CAM;
msg["Val"] = stepperVelocity;

serializeJson(msg, Serial);
}

+ 30
- 0
sloeber.ino.cpp 查看文件

@@ -0,0 +1,30 @@
#ifdef __IN_ECLIPSE__
//This is a automatic generated file
//Please do not modify this file
//If you touch this file your change will be overwritten during the next build
//This file has been generated on 2024-02-12 21:37:17

#include "Arduino.h"
#include "Arduino.h"
#include <ArduinoJson.h>
#include <AccelStepper.h>
#include <HardwareSerial.h>
#include <math.h>

void setup() ;
void loop() ;
void moveStepper() ;
String readSerialData() ;
void setFastStepperVelocity() ;
void setSlowStepperVelocity() ;
void sendVersion() ;
void sendRelayPowerStatus(String status) ;
void sendCamPowerStatus(String status) ;
void sendZeroCamStatus(String val) ;
void sendCamActAzimut(String val) ;
void sendCamVelocityStatus() ;

#include "FSRemotePowerSwitch.ino"


#endif

+ 2
- 0
spec.d 查看文件

@@ -0,0 +1,2 @@
spec.o: \
Z:/Privat/Diverses/Arduino/Sketches/SloeberWS/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.cpp

Loading…
取消
儲存