summaryrefslogtreecommitdiff
path: root/OpenModelicaArduino/package.mo
diff options
context:
space:
mode:
authorSumeet Koli2018-06-16 18:32:28 +0530
committerSumeet Koli2018-06-16 18:32:28 +0530
commitb73fc99be96534b5b8e3db6240ab62e9293a9be7 (patch)
treeafce57db40f5ec6b8f4a3a45d0260e41b7225ab2 /OpenModelicaArduino/package.mo
parent4ad6246e6567e912ab2ef37bb64d78cdf33f8cbc (diff)
downloadOpenModelicaEmbedded-b73fc99be96534b5b8e3db6240ab62e9293a9be7.tar.gz
OpenModelicaEmbedded-b73fc99be96534b5b8e3db6240ab62e9293a9be7.tar.bz2
OpenModelicaEmbedded-b73fc99be96534b5b8e3db6240ab62e9293a9be7.zip
Servo min-max pulse issue resolved
Diffstat (limited to 'OpenModelicaArduino/package.mo')
-rw-r--r--OpenModelicaArduino/package.mo17
1 files changed, 12 insertions, 5 deletions
diff --git a/OpenModelicaArduino/package.mo b/OpenModelicaArduino/package.mo
index b8addeb..f3a153c 100644
--- a/OpenModelicaArduino/package.mo
+++ b/OpenModelicaArduino/package.mo
@@ -83,9 +83,9 @@ model AnalogInput "Reads an analog signal from the specified pin"
parameter Integer Pin = 0 "Number of the analog pin";
OpenModelicaArduino.Internal.Interfaces.PinConnector pinConnector annotation(Placement(visible = true, transformation(origin = {-100, -0}, extent = {{-20, -20}, {20, 20}}, rotation = 0), iconTransformation(origin = {-100, -0}, extent = {{-20, -20}, {20, 20}}, rotation = 0)));
parameter Real InitValue = 0 "Initial value until the board responds" annotation(Dialog(group = "Initialization"));
- parameter Real MinValue = 0 "Minimum value when the ADC reads 0" annotation(Dialog(group = "Scaling"));
- parameter Real MaxValue = 1 "Maximum value when the ADC reads 1024" annotation(Dialog(group = "Scaling"));
- parameter Integer adcResolution = 10 "Resolution of the ADC your board is using" annotation(Dialog(group = "Scaling"));
+ parameter Real MinValue = 0 "Minimum value of ADC" annotation(Dialog(group = "Scaling"));
+ parameter Real MaxValue = 1 "Maximum value of ADC" annotation(Dialog(group = "Scaling"));
+ parameter Integer adcResolution = 10 "Resolution of the ADC in your microcontroller" annotation(Dialog(group = "Scaling"));
equation
y = OpenModelicaArduino.Internal.ExternalFunctions.readAnalogPin(Pin, MinValue, MaxValue, InitValue, pinConnector, adcResolution);
annotation(Documentation(info = "<html><p>Reads an analog signal from the specified pin. This component uses the 'analogRead' function of Arduino.</p>
@@ -119,6 +119,9 @@ end AnalogInput;
+
+
+
model AnalogOutput "Writes an analog signal to the specified pin"
extends OpenModelicaArduino.Internal.Icons.Block;
Modelica.Blocks.Interfaces.RealInput u annotation(Placement(visible = true, transformation(origin = {-110, -0}, extent = {{-25, -25}, {25, 25}}, rotation = 0), iconTransformation(origin = {-100, 0}, extent = {{-20, -20}, {20, 20}}, rotation = 0)));
@@ -183,8 +186,10 @@ end AnalogOutput;
OpenModelicaArduino.Internal.Interfaces.PinConnector pinConnector annotation(Placement(visible = true, transformation(origin = {100, 0}, extent = {{-20, -20}, {20, 20}}, rotation = 0), iconTransformation(origin = {100, -0}, extent = {{-20, -20}, {20, 20}}, rotation = 0)));
parameter Integer Pin = 0 "Pin number of the servo";
parameter OpenModelicaArduino.Internal.Types.ServoUnit InputUnit "if None (Default) the servo receives a signal between 0 and 1. If Degrees the control signal is from 0 to 180. If Radians the signal is from 0 to Pi.";
- parameter Integer MinPulse = 544 "The pulse width, in microseconds, corresponding to the minimum (0-degree) angle on the servo." annotation(Dialog(group = "Advanced"));
- parameter Integer MaxPulse = 2400 "The pulse width, in microseconds, corresponding to the maximum (180-degree) angle on the servo." annotation(Dialog(group = "Advanced"));
+ parameter Integer MinPulse = 544 "The pulse width, in microseconds, corresponding to the minimum (0-degree) angle on the servo.
+ (Ignore this parameter if using Tiva C board)" annotation(Dialog(group = "Advanced"));
+ parameter Integer MaxPulse = 2400 "The pulse width, in microseconds, corresponding to the maximum (180-degree) angle on the servo.
+ (Ignore this parameter if using Tiva C board)" annotation(Dialog(group = "Advanced"));
Real outputSignal;
equation
outputSignal = if InputUnit == OpenModelicaArduino.Internal.Types.ServoUnit.None then u else if InputUnit == OpenModelicaArduino.Internal.Types.ServoUnit.Degrees then u / 180 else if InputUnit == OpenModelicaArduino.Internal.Types.ServoUnit.Radians then u / Modelica.Constants.pi else u;
@@ -196,6 +201,8 @@ end AnalogOutput;
+
+
annotation(Icon(coordinateSystem(extent = {{-100, -100}, {100, 100}}, preserveAspectRatio = true, initialScale = 0.1, grid = {10, 10}), graphics = {Rectangle(visible = true, origin = {-30, 30}, fillColor = {250, 105, 0}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, borderPattern = BorderPattern.Engraved, extent = {{-25, -25}, {25, 25}}, radius = 50), Rectangle(visible = true, origin = {30, 30}, fillColor = {243, 134, 48}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, borderPattern = BorderPattern.Engraved, extent = {{-25, -25}, {25, 25}}, radius = 50), Rectangle(visible = true, origin = {-30, -30}, fillColor = {167, 219, 216}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, borderPattern = BorderPattern.Engraved, extent = {{-25, -25}, {25, 25}}, radius = 50), Rectangle(visible = true, origin = {30, -30}, fillColor = {105, 210, 231}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, borderPattern = BorderPattern.Engraved, extent = {{-25, -25}, {25, 25}}, radius = 50)}), Diagram(coordinateSystem(extent = {{-148.5, -105}, {148.5, 105}}, preserveAspectRatio = true, initialScale = 0.1, grid = {5, 5})));
end Pins;