Files
collection/examples/flowchart.dot
2026-03-10 15:02:51 +01:00

177 lines
3.8 KiB
Plaintext

digraph solution_diagram {
rankdir=TB;
nodesep=0.8;
splines=ortho
node [
fontname="JetBrainsMono",
style="rounded,filled",
fillcolor="white",
];
edge [
fontname="JetBrainsMono",
];
// NOTE: for some reason subgraph names have to start with `cluster`
// otherwise the subgraph is not treated as a box
subgraph clustermain {
label="";
color=none;
start [
shape=circle,
label="",
style="filled",
color=black,
fillcolor=black,
width=0.3,
rank=0,
];
init_adc [
shape=box,
label="initialise ADC",
];
read_adc [
shape=box,
label="read ADC value",
];
dec_t0 [
shape=diamond,
label="if T0",
style="",
];
}
subgraph clustergreen {
label="";
style=filled;
color="#80D070";
green [
shape=box,
label="set green\nlcd backlight",
];
seg7 [
shape=box,
label="output adc value\nto 7seg display",
];
ledbar [
shape=box,
label="calculate and\ndisplay led bar",
];
}
subgraph not_green {
label="";
subgraph diff {
label="";
read_dip [
shape=box,
label="read DIPSW[7..0]",
];
diff [
shape=box,
label="DIPSW[7..0]\n- adc value",
];
dec_diff1 [
shape=diamond,
label="diff >= 0?",
style="",
];
}
subgraph clusterblue {
label="";
style=filled;
color="#7080D0";
blue [
shape=box,
label="set blue\nlcd backlight",
];
dec_diff2 [
shape=diamond,
label="diff range",
style="",
];
disp2 [
shape=box,
label="display '2 Bit'\non lcd",
];
disp4 [
shape=box,
label="display '4 Bit'\non lcd",
];
disp8 [
shape=box,
label="display '8 Bit'\non lcd",
];
}
subgraph clusterred {
label="";
style=filled;
color="#F07070";
red [
shape=box,
label="set red\nlcd backlight",
];
count0 [
shape=box,
label="count zeroes\nin difference\n(binary value)",
];
disp0 [
shape=box,
label="display number\nof zeroes on lcd",
];
}
}
joint [
shape=diamond,
style="",
label="",
width=0.4,
height=0.4,
];
start -> init_adc;
init_adc -> read_adc;
read_adc -> dec_t0;
dec_t0 -> green [xlabel="T0 = 1"];
green -> seg7;
seg7 -> ledbar;
// ledbar -> read_adc;
dec_t0 -> read_dip [xlabel="T0 = 0"];
read_dip -> diff;
diff -> dec_diff1
dec_diff1 -> blue [xlabel="diff >= 0"];
blue -> dec_diff2;
dec_diff2 -> disp2 [xlabel="diff < 4"];
dec_diff2 -> disp4 [xlabel="diff < 16"];
dec_diff2 -> disp8 [xlabel="diff >= 16"];
// disp2 -> read_adc;
// disp4 -> read_adc;
// disp8 -> read_adc;
dec_diff1 -> red [xlabel="diff < 0"];
red -> count0;
count0 -> disp0;
// disp0 -> read_adc;
ledbar -> joint;
disp2 -> joint;
disp4 -> joint;
disp8 -> joint;
disp0 -> joint;
joint -> read_adc;
}