Skip to content
Snippets Groups Projects
Commit d317e265 authored by Adrian Josef Waldvogel's avatar Adrian Josef Waldvogel
Browse files

Übung 8.1 abgeschlossen

parent 0610532d
No related branches found
No related tags found
No related merge requests found
Showing
with 506 additions and 0 deletions
.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}
{
"C_Cpp_Runner.cCompilerPath": "gcc",
"C_Cpp_Runner.cppCompilerPath": "g++",
"C_Cpp_Runner.debuggerPath": "gdb",
"C_Cpp_Runner.cStandard": "",
"C_Cpp_Runner.cppStandard": "",
"C_Cpp_Runner.msvcBatchPath": "",
"C_Cpp_Runner.useMsvc": false,
"C_Cpp_Runner.warnings": [
"-Wall",
"-Wextra",
"-Wpedantic",
"-Wshadow",
"-Wformat=2",
"-Wcast-align",
"-Wconversion",
"-Wsign-conversion",
"-Wnull-dereference"
],
"C_Cpp_Runner.msvcWarnings": [
"/W4",
"/permissive-",
"/w14242",
"/w14287",
"/w14296",
"/w14311",
"/w14826",
"/w44062",
"/w44242",
"/w14905",
"/w14906",
"/w14263",
"/w44265",
"/w14928"
],
"C_Cpp_Runner.enableWarnings": true,
"C_Cpp_Runner.warningsAsError": false,
"C_Cpp_Runner.compilerArgs": [],
"C_Cpp_Runner.linkerArgs": [],
"C_Cpp_Runner.includePaths": [],
"C_Cpp_Runner.includeSearch": [
"*",
"**/*"
],
"C_Cpp_Runner.excludeSearch": [
"**/build",
"**/build/**",
"**/.*",
"**/.*/**",
"**/.vscode",
"**/.vscode/**"
],
"C_Cpp_Runner.useAddressSanitizer": false,
"C_Cpp_Runner.useUndefinedSanitizer": false,
"C_Cpp_Runner.useLeakSanitizer": false,
"C_Cpp_Runner.showCompilationTime": false,
"C_Cpp_Runner.useLinkTimeOptimization": false,
"C_Cpp_Runner.msvcSecureNoWarnings": false
}
\ No newline at end of file
Dieses PlatformIO Projekt beinhaltet den Sourcecode zum Lösen der GruLaIT-Aufgabe 6 Flowerpots
<diagram program="umletino" version="14.4.0-SNAPSHOT"><zoom_level>10</zoom_level><help_text>Space for diagram notes
---
njnju
</help_text><element><id>UMLUseCase</id><coordinates><x>550</x><y>420</y><w>170</w><h>170</h></coordinates><panel_attributes>2
S_WATERING
-
entry / valvePos &gt; 90
do / watering
exit / tickCount &gt;= 100</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>670</x><y>290</y><w>160</w><h>170</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
T_ENTERWATERING</panel_attributes><additional_attributes>20;150;17;10</additional_attributes></element><element><id>Relation</id><coordinates><x>450</x><y>290</y><w>160</w><h>180</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
r1=T_ENTEROBSERVE
r1pos=-130,38</panel_attributes><additional_attributes>133;10;130;153</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>550</x><y>150</y><w>170</w><h>170</h></coordinates><panel_attributes>1
S_OBSERVE
-
entry / valvePos&lt;0
do / observe
exit / threshold &gt; moisture</panel_attributes><additional_attributes></additional_attributes></element></diagram>
\ No newline at end of file
<diagram program="umletino" version="14.4.0-SNAPSHOT"><zoom_level>10</zoom_level><element><id>UMLClass</id><coordinates><x>360</x><y>590</y><w>320</w><h>180</h></coordinates><panel_attributes>&lt;&lt;class&gt;&gt;
MoistureSensor
--
- soilMoisture : int = 10
- address : uint8_t
- display : LiquidCrystal_AIP31068_I2C{address. 8, 1}
--
+ MoistureSensor(address: uint8_t)
+ begin() : void
+ watering() : int
+ getSoilMoisture() : int
- writeToPanel() : void</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>521</x><y>290</y><w>360</w><h>260</h></coordinates><panel_attributes>&lt;&lt;class&gt;&gt;
Flowerpot
--
- threshold : int
- valvePin : int
- moisture : int = 0
- tickCount : int = 0
- valvePos : int = 0
- displayAddress : uint8_t
- state : ValveStates
- moistureSensor : MoistureSensor{displayAddress}
- valve : Servo
--
+ Flowerpot(threshold: int, displayAddress: uint8_t, valvePin: int)
+ loop() : void
+ begin() : void
- observe() : void
- watering() : void</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>500</x><y>10</y><w>400</w><h>220</h></coordinates><panel_attributes>&lt;&lt;Modul&gt;&gt;
main.cpp
--
- VALVE_PIN1 : int = 5
- VALVE_PIN2 : int = 3
- VALVE_PIN3 : int = 6
- DISPLAY_ADDRESS1: uint8_t = 0x3E
- DISPLAY_ADDRESS2: uint8_t = 0x3F
- DISPLAY_ADDRESS3: uint8_t = 0x40
- flowerpot1 : Flowerpot{10, DISPLAY_ADDRESS1, VALVE_PIN1 }
- flowerpot2 : Flowerpot{50, DISPLAY_ADDRESS2, VALVE_PIN2 }
- flowerpot3 : Flowerpot{30, DISPLAY_ADDRESS3, VALVE_PIN3 }
--
- setup() : void
- loop() : void</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>870</x><y>430</y><w>120</w><h>190</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>10;10;100;10;100;170</additional_attributes></element><element><id>Relation</id><coordinates><x>450</x><y>420</y><w>90</w><h>190</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>70;10;10;10;10;170</additional_attributes></element><element><id>Relation</id><coordinates><x>680</x><y>220</y><w>30</w><h>90</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>10;10;10;70</additional_attributes></element><element><id>UMLClass</id><coordinates><x>1100</x><y>320</y><w>150</w><h>110</h></coordinates><panel_attributes>&lt;&lt;enumaration&gt;&gt;
ValveStates
--
S_OBSERVE
T_ENTERWATERING
S_WATERING
T_ENTEROBSERVE</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>870</x><y>370</y><w>250</w><h>30</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>230;10;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>890</x><y>600</y><w>150</w><h>100</h></coordinates><panel_attributes>&lt;&lt;class&gt;&gt;
Servo
--
--
+ Servo()
+ attach(pin : int) : uint8_t
+ write(value : int)</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>100</x><y>700</y><w>220</w><h>50</h></coordinates><panel_attributes>&lt;&lt;class&gt;&gt;
LiquidCrystal_AIP31068_I2C
--
--</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>200</x><y>630</y><w>180</w><h>90</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>160;10;10;10;10;70</additional_attributes></element></diagram>
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:uno]
platform = atmelavr
board = uno
framework = arduino
lib_deps =
Servo
red-scorp/LiquidCrystal_AIP31068@^1.0.4
red-scorp/SoftSPIB@^1.1.2
SPI
#include "Flowerpot.h"
Flowerpot::Flowerpot(int threshold, uint8_t displayAddress, int valvePin)
: threshold{threshold}, displayAddress{displayAddress}, valvePin{valvePin},
moisture{0}, tickCount{0}, valvePos{0},
moistureSensor{displayAddress}
{
state = S_OBSERVE;
};
void Flowerpot::begin()
{
moistureSensor.begin();
valve.attach(valvePin, 1000, 2000);
valve.write(valvePos);
}
void Flowerpot::loop()
{
switch (state)
{
case S_OBSERVE:
observe();
if (threshold > moisture) {
state = T_ENTERWATERING;
}
break;
case T_ENTERWATERING:
valve.write(valvePos++);
if (valvePos > 90) {
state = S_WATERING;
}
break;
case S_WATERING:
watering();
tickCount++;
if (tickCount>=100){
tickCount = 0;
state = T_ENTEROBSERVE;
}
break;
case T_ENTEROBSERVE:
valve.write(valvePos--);
if (valvePos < 0) {
state = S_OBSERVE;
}
break;
}
}
void Flowerpot::observe()
{
moisture = moistureSensor.getSoilMoisture();
}
void Flowerpot::watering()
{
moisture = moistureSensor.watering();
}
\ No newline at end of file
#pragma once
#include <Servo.h>
#include "MoistureSensor.h"
class Flowerpot
{
public:
Flowerpot(int threshold, uint8_t displayAddress, int valvePin);
void begin();
void loop();
private:
enum ValveStates{S_OBSERVE, T_ENTERWATERING, S_WATERING, T_ENTEROBSERVE};
int threshold;
uint8_t displayAddress;
int valvePin;
int moisture;
int tickCount;
int valvePos;
ValveStates state;
MoistureSensor moistureSensor;
Servo valve;
void observe();
void watering();
};
/**
* @file MoistureSensor.cpp
* @author Samuel Helbling (samuel.helbling@ost.ch)
* @brief
* @version 0.2
* @date 2022-03-31
*
* @copyright Copyright (c) 2022
*
*/
#include "Arduino.h"
#include "MoistureSensor.h"
#include <stdlib.h>
/**
* @brief Construct a new Moisture Sensor:: Moisture Sensor object
*
* @param address I2C address of display
*/
MoistureSensor::MoistureSensor(uint8_t address) : address{address}{
};
/**
* @brief Must be called during setup. Initializes display
*
*/
void MoistureSensor::begin(){
display.init();
display.clear();
}
/**
* @brief Call for watering flowerpot
*
* @return returns current moisture as int
*/
int MoistureSensor::watering(){
if (soilMoisture<100){
soilMoisture++;
writeToDisplay();
}
return soilMoisture;
}
/**
* @brief Call to update and get moisture
*
* @return returns current moisture as int
*/
int MoistureSensor::getSoilMoisture(){
soilMoisture = soilMoisture - random(3);
if(soilMoisture<0){
soilMoisture=0;
}
writeToDisplay();
return soilMoisture;
}
// Private functions
void MoistureSensor::writeToDisplay(){
display.clear();
display.setCursor(0,0);
display.print(soilMoisture);
display.setCursor(4,0);
display.print("%");
delay(50);
}
\ No newline at end of file
/**
* @file MoistureSensor.h
* @author Samuel Helbling (samuel.helbling@ost.ch)
* @brief
* @version 0.2
* @date 2022-03-31
*
* @copyright Copyright (c) 2022
*
*/
#ifndef MOISTURESENSOR_H
#define MOISTURESENSOR_H
#include <LiquidCrystal_AIP31068_I2C.h>
class MoistureSensor
{
public:
MoistureSensor(uint8_t address);
void begin();
int watering();
int getSoilMoisture();
private:
int soilMoisture{10};
uint8_t address;
LiquidCrystal_AIP31068_I2C display{address, 8, 1};
void writeToDisplay();
};
#endif
\ No newline at end of file
#include <Arduino.h>
#include "Flowerpot.h"
#define VALVE_PIN1 5
#define VALVE_PIN2 3
#define VALVE_PIN3 6
#define DISPLAY_ADDRESS1 0x3E
#define DISPLAY_ADDRESS2 0x3F
#define DISPLAY_ADDRESS3 0x40
Flowerpot flowerpot1{10, DISPLAY_ADDRESS1, VALVE_PIN1};
Flowerpot flowerpot2{50, DISPLAY_ADDRESS2, VALVE_PIN2};
Flowerpot flowerpot3{30, DISPLAY_ADDRESS3, VALVE_PIN3};
void setup() {
Serial.begin(9600);
flowerpot1.begin();
flowerpot2.begin();
flowerpot3.begin();
}
void loop() {
flowerpot1.loop();
flowerpot2.loop();
flowerpot3.loop();
delay(50);
}
\ No newline at end of file
<circuit version="1.0.0-SR2" rev="1449" stepSize="1000000" stepsPS="1000000" NLsteps="100000" reaStep="1000000" animate="0" >
<item itemtype="Aip31068_i2c" CircId="Aip31068_i2c-52" mainComp="false" Show_id="false" Show_Val="false" Pos="68,288" rotation="0" hflip="1" vflip="1" label="Aip31068_i2c-2" idLabPos="70,-82" labelrot="0" valLabPos="-16,20" valLabRot="0" Rows="1 Rows" Cols="8 Columns" Control_Code="62" Frequency="100 _KHz" />
<item itemtype="Servo" CircId="Servo-54" mainComp="false" Show_id="false" Show_Val="false" Pos="144,340" rotation="0" hflip="1" vflip="1" label="Servo-47" idLabPos="-16,-40" labelrot="0" valLabPos="-16,20" valLabRot="0" Speed="0.01 sec/60º" Input_High_V="2.5 V" Input_Low_V="2.5 V" Input_Imped="1e+09 Ω" />
<item itemtype="Rectangle" CircId="Rectangle-63" mainComp="false" Show_id="false" Show_Val="false" Pos="136,308" rotation="0" hflip="1" vflip="1" label="Rectangle-63" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" H_size="150 Pixels" V_size="150 Pixels" Border="2 _Pixels" Z_Value="-1" Color="#a0a0a4" Opacity="1" />
<item itemtype="Aip31068_i2c" CircId="Aip31068_i2c-64" mainComp="false" Show_id="false" Show_Val="false" Pos="68,468" rotation="0" hflip="1" vflip="1" label="Aip31068_i2c-2" idLabPos="70,-82" labelrot="0" valLabPos="-16,20" valLabRot="0" Rows="1 Rows" Cols="8 Columns" Control_Code="63" Frequency="100 _KHz" />
<item itemtype="Servo" CircId="Servo-65" mainComp="false" Show_id="false" Show_Val="false" Pos="144,520" rotation="0" hflip="1" vflip="1" label="Servo-47" idLabPos="-16,-40" labelrot="0" valLabPos="-16,20" valLabRot="0" Speed="0.01 sec/60º" Input_High_V="2.5 V" Input_Low_V="2.5 V" Input_Imped="1e+09 Ω" />
<item itemtype="Rectangle" CircId="Rectangle-66" mainComp="false" Show_id="false" Show_Val="false" Pos="136,488" rotation="0" hflip="1" vflip="1" label="Rectangle-63" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" H_size="150 Pixels" V_size="150 Pixels" Border="2 _Pixels" Z_Value="-1" Color="#a0a0a4" Opacity="1" />
<item itemtype="Aip31068_i2c" CircId="Aip31068_i2c-67" mainComp="false" Show_id="false" Show_Val="false" Pos="68,648" rotation="0" hflip="1" vflip="1" label="Aip31068_i2c-2" idLabPos="70,-82" labelrot="0" valLabPos="-16,20" valLabRot="0" Rows="1 Rows" Cols="8 Columns" Control_Code="64" Frequency="100 _KHz" />
<item itemtype="Servo" CircId="Servo-68" mainComp="false" Show_id="false" Show_Val="false" Pos="144,700" rotation="0" hflip="1" vflip="1" label="Servo-47" idLabPos="-16,-40" labelrot="0" valLabPos="-16,20" valLabRot="0" Speed="0.01 sec/60º" Input_High_V="2.5 V" Input_Low_V="2.5 V" Input_Imped="1e+09 Ω" />
<item itemtype="Rectangle" CircId="Rectangle-69" mainComp="false" Show_id="false" Show_Val="false" Pos="136,668" rotation="0" hflip="1" vflip="1" label="Rectangle-63" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" H_size="150 Pixels" V_size="150 Pixels" Border="2 _Pixels" Z_Value="-1" Color="#a0a0a4" Opacity="1" />
<item itemtype="Image" CircId="Image-74" mainComp="false" Show_id="false" Show_Val="false" Pos="292,668" rotation="0" hflip="1" vflip="1" label="Image-74" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" H_size="150 Pixels" V_size="150 Pixels" Border="2 _Pixels" Z_Value="-1" Color="#a0a0a4" Opacity="1" Image_File="pot3.jpg" />
<item itemtype="Subcircuit" CircId="Uno-75" mainComp="false" Show_id="false" Show_Val="false" Pos="-280,324" rotation="90" hflip="1" vflip="1" label="Uno-75" idLabPos="0,-20" labelrot="0" valLabPos="-16,20" valLabRot="0" Logic_Symbol="false">
<mainCompProps itemtype="MCU" CircId="75_mega328-109" mainComp="true" Show_id="false" Show_Val="false" Pos="20,20" rotation="0" hflip="1" vflip="1" label="75_mega328-109" idLabPos="0,-20" labelrot="0" valLabPos="-16,20" valLabRot="0" Frequency="16 MHz" Program="../.pio/build/uno/firmware.hex" Auto_Load="false" Rst_enabled="true" Ext_Osc="true" Wdt_enabled="false" />
</item>
<item itemtype="Image" CircId="Image-126" mainComp="false" Show_id="false" Show_Val="false" Pos="292,308" rotation="0" hflip="1" vflip="1" label="Image-126" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" H_size="150 Pixels" V_size="150 Pixels" Border="2 _Pixels" Z_Value="-1" Color="#a0a0a4" Opacity="1" Image_File="pot1.jpg" />
<item itemtype="Image" CircId="Image-127" mainComp="false" Show_id="false" Show_Val="false" Pos="292,488" rotation="0" hflip="1" vflip="1" label="Image-127" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" H_size="150 Pixels" V_size="150 Pixels" Border="2 _Pixels" Z_Value="-1" Color="#a0a0a4" Opacity="1" Image_File="pot2.jpg" />
<item itemtype="TextComponent" CircId="TextComponent-135" mainComp="false" Show_id="false" Show_Val="false" Pos="140,284" rotation="0" hflip="1" vflip="1" label="TextComponent-134" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" Margin="5 _Pixels" Border="0 Pixels" Opacity="0" Font="Helvetica [Cronyx]" Font_Size="10 _Pixels" Fixed_Width="false" Text="Closed" />
<item itemtype="TextComponent" CircId="TextComponent-136" mainComp="false" Show_id="false" Show_Val="false" Pos="216,320" rotation="90" hflip="1" vflip="1" label="TextComponent-134" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" Margin="5 _Pixels" Border="0 Pixels" Opacity="0" Font="Helvetica [Cronyx]" Font_Size="10 _Pixels" Fixed_Width="false" Text="Open" />
<item itemtype="TextComponent" CircId="TextComponent-137" mainComp="false" Show_id="false" Show_Val="false" Pos="140,464" rotation="0" hflip="1" vflip="1" label="TextComponent-134" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" Margin="5 _Pixels" Border="0 Pixels" Opacity="0" Font="Helvetica [Cronyx]" Font_Size="10 _Pixels" Fixed_Width="false" Text="Closed" />
<item itemtype="TextComponent" CircId="TextComponent-138" mainComp="false" Show_id="false" Show_Val="false" Pos="140,644" rotation="0" hflip="1" vflip="1" label="TextComponent-134" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" Margin="5 _Pixels" Border="0 Pixels" Opacity="0" Font="Helvetica [Cronyx]" Font_Size="10 _Pixels" Fixed_Width="false" Text="Closed" />
<item itemtype="TextComponent" CircId="TextComponent-139" mainComp="false" Show_id="false" Show_Val="false" Pos="216,500" rotation="90" hflip="1" vflip="1" label="TextComponent-134" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" Margin="5 _Pixels" Border="0 Pixels" Opacity="0" Font="Helvetica [Cronyx]" Font_Size="10 _Pixels" Fixed_Width="false" Text="Open" />
<item itemtype="TextComponent" CircId="TextComponent-141" mainComp="false" Show_id="false" Show_Val="false" Pos="216,684" rotation="90" hflip="1" vflip="1" label="TextComponent-134" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" Margin="5 _Pixels" Border="0 Pixels" Opacity="0" Font="Helvetica [Cronyx]" Font_Size="10 _Pixels" Fixed_Width="false" Text="Open" />
<item itemtype="TextComponent" CircId="TextComponent-165" mainComp="false" Show_id="false" Show_Val="false" Pos="376,292" rotation="0" hflip="1" vflip="1" label="TextComponent-165" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" Margin="2 Pixels" Border="1 Pixels" Opacity="1" Font="Roboto" Font_Size="11 Pixels" Fixed_Width="false" Text="Flowerpot 1" />
<item itemtype="TextComponent" CircId="TextComponent-166" mainComp="false" Show_id="false" Show_Val="false" Pos="376,476" rotation="0" hflip="1" vflip="1" label="TextComponent-165" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" Margin="2 Pixels" Border="1 Pixels" Opacity="1" Font="Roboto" Font_Size="11 Pixels" Fixed_Width="false" Text="Flowerpot 2" />
<item itemtype="TextComponent" CircId="TextComponent-167" mainComp="false" Show_id="false" Show_Val="false" Pos="376,656" rotation="0" hflip="1" vflip="1" label="TextComponent-165" idLabPos="-16,-24" labelrot="0" valLabPos="-16,20" valLabRot="0" Margin="2 Pixels" Border="1 Pixels" Opacity="1" Font="Roboto" Font_Size="11 Pixels" Fixed_Width="false" Text="Flowerpot 3" />
<item itemtype="Node" CircId="Node-78" mainComp="false" Pos="36,484" />
<item itemtype="Node" CircId="Node-87" mainComp="false" Pos="28,492" />
<item itemtype="Node" CircId="Node-100" mainComp="false" Pos="52,700" />
<item itemtype="Node" CircId="Node-120" mainComp="false" Pos="44,504" />
<item itemtype="Node" CircId="Node-123" mainComp="false" Pos="52,520" />
<item itemtype="Node" CircId="Node-128" mainComp="false" Pos="36,556" />
<item itemtype="Node" CircId="Node-132" mainComp="false" Pos="28,548" />
<item itemtype="Node" CircId="Node-192" mainComp="false" Pos="44,684" />
<item itemtype="Connector" uid="connector-193" startpinid="Aip31068_i2c-52PinSDA" endpinid="Node-78-1" pointList="84,296,36,296,36,484" />
<item itemtype="Connector" uid="connector-194" startpinid="Node-78-2" endpinid="Aip31068_i2c-64PinSDA" pointList="36,484,84,484,84,476" />
<item itemtype="Connector" uid="connector-195" startpinid="Aip31068_i2c-64PinSCL" endpinid="Node-87-0" pointList="92,476,92,492,28,492" />
<item itemtype="Connector" uid="connector-196" startpinid="Node-87-1" endpinid="Aip31068_i2c-52PinSCL" pointList="28,492,28,304,92,304,92,296" />
<item itemtype="Connector" uid="connector-197" startpinid="Uno-75-3" endpinid="Servo-65-in2" pointList="-128,364,-128,348,-4,348,-4,536,96,536" />
<item itemtype="Connector" uid="connector-198" startpinid="Servo-54-in2" endpinid="Uno-75-5" pointList="96,356,4,356,4,340,-144,340,-144,364" />
<item itemtype="Connector" uid="connector-199" startpinid="Uno-75-6" endpinid="Servo-68-in2" pointList="-152,364,-152,332,12,332,12,716,96,716" />
<item itemtype="Connector" uid="connector-200" startpinid="Uno-75-GND0" endpinid="Node-100-0" pointList="-168,508,-168,700,52,700" />
<item itemtype="Connector" uid="connector-201" startpinid="Servo-65-in0" endpinid="Node-120-0" pointList="96,504,44,504" />
<item itemtype="Connector" uid="connector-202" startpinid="Servo-65-in1" endpinid="Node-123-0" pointList="96,520,52,520" />
<item itemtype="Connector" uid="connector-203" startpinid="Node-100-2" endpinid="Servo-68-in1" pointList="52,700,96,700" />
<item itemtype="Connector" uid="connector-204" startpinid="Node-120-1" endpinid="Servo-54-in0" pointList="44,504,44,324,96,324" />
<item itemtype="Connector" uid="connector-205" startpinid="Node-123-2" endpinid="Node-100-1" pointList="52,520,52,700" />
<item itemtype="Connector" uid="connector-206" startpinid="Node-123-1" endpinid="Servo-54-in1" pointList="52,520,52,340,96,340" />
<item itemtype="Connector" uid="connector-207" startpinid="Aip31068_i2c-67PinSDA" endpinid="Node-128-0" pointList="84,656,84,668,36,668,36,556" />
<item itemtype="Connector" uid="connector-208" startpinid="Node-87-2" endpinid="Node-132-0" pointList="28,492,28,548" />
<item itemtype="Connector" uid="connector-209" startpinid="Node-128-2" endpinid="Node-78-0" pointList="36,556,36,484" />
<item itemtype="Connector" uid="connector-210" startpinid="Node-128-1" endpinid="Uno-75-A4" pointList="36,556,-112,556,-112,508" />
<item itemtype="Connector" uid="connector-211" startpinid="Uno-75-A5" endpinid="Node-132-1" pointList="-104,508,-104,548,28,548" />
<item itemtype="Connector" uid="connector-212" startpinid="Node-132-2" endpinid="Aip31068_i2c-67PinSCL" pointList="28,548,28,676,92,676,92,656" />
<item itemtype="Connector" uid="connector-213" startpinid="Servo-68-in0" endpinid="Node-192-0" pointList="96,684,44,684" />
<item itemtype="Connector" uid="connector-214" startpinid="Uno-75-5V0" endpinid="Node-192-1" pointList="-184,508,-184,684,44,684" />
<item itemtype="Connector" uid="connector-215" startpinid="Node-192-2" endpinid="Node-120-2" pointList="44,684,44,504" />
</circuit>
\ No newline at end of file
This directory is intended for PlatformIO Unit Testing and project tests.
Unit Testing is a software testing method by which individual units of
source code, sets of one or more MCU program modules together with associated
control data, usage procedures, and operating procedures, are tested to
determine whether they are fit for use. Unit testing finds problems early
in the development cycle.
More information about PlatformIO Unit Testing:
- https://docs.platformio.org/page/plus/unit-testing.html
Uebung_8.1_Flowerpots/test/pot1.jpg

8.08 KiB

Uebung_8.1_Flowerpots/test/pot2.jpg

8.14 KiB

Uebung_8.1_Flowerpots/test/pot3.jpg

7.55 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment