Skip to content

mofosyne/linmap.h

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

linmap.h

Version 0.0.4 License: MIT C CI/CD Status Badge

Lightweight Linear Mapping Library (e.g. ADC Conversion)

linmap.h is a header-only C library that provides a way to map numerical values from one range to another.

Check out the example output in here


ADC CONVERSION MACRO OUTPUT EXAMPLE

  • MILLI_VOLT_REFERENCE : 3300
  • ADC_BIT_COUNT : 10
  • SCALING_FACTOR : 10

Fixed Linear Conversion (8-bit)

ADC Value --> Millivolt --> ADC Value

ADC Value Millivolts (Fixed Point) ADC From mV (Fixed Point) error
0 0 0 0
64 206 63 -1
128 156 48 -80
192 107 33 -159
256 0 0 0
320 206 63 -1
384 156 48 -80
448 107 33 -159
512 0 0 0
576 206 63 -1
640 156 48 -80
704 107 33 -159
768 0 0 0
832 206 63 -1
896 156 48 -80
960 107 33 -159
1024 0 0 0

Millivolt --> ADC Value --> Millivolt

MV Value ADC From mV (Fixed Point) Millivolts (Fixed Point) error
0 mV 0 0 0
100 mV 31 100 0
200 mV 62 200 0
300 mV 13 41 -3
400 mV 44 141 -3
500 mV 75 241 -3
600 mV 27 87 -1
700 mV 58 187 -1
800 mV 9 29 -3
900 mV 40 129 -3
1000 mV 71 229 -3
1100 mV 23 74 -2
1200 mV 54 174 -2
1300 mV 6 19 -1
1400 mV 37 119 -1
1500 mV 68 219 -1
1600 mV 19 61 -3
1700 mV 50 161 -3
1800 mV 2 6 -2
1900 mV 33 106 -2
2000 mV 64 206 -2
2100 mV 16 51 -1
2200 mV 47 151 -1
2300 mV 78 251 -1
2400 mV 29 93 -3
2500 mV 60 193 -3
2600 mV 12 38 -2
2700 mV 43 138 -2
2800 mV 74 238 -2
2900 mV 26 83 -1
3000 mV 57 183 -1
3100 mV 8 25 -3
3200 mV 39 125 -3
3300 mV 70 225 -3

Fixed Linear Conversion (16-bit)

ADC Value --> Millivolt --> ADC Value

ADC Value Millivolts (Fixed Point) ADC From mV (Fixed Point) error
0 0 0 0
64 206 63 -1
128 412 127 -1
192 619 191 -1
256 825 255 -1
320 1032 319 -1
384 1238 383 -1
448 1445 447 -1
512 1651 511 -1
576 1858 575 -1
640 2064 639 -1
704 2270 703 -1
768 2477 767 -1
832 2683 831 -1
896 2890 895 -1
960 3096 959 -1
1024 3303 1023 -1

Millivolt --> ADC Value --> Millivolt

MV Value ADC From mV (Fixed Point) Millivolts (Fixed Point) error
0 mV 0 0 0
100 mV 31 100 0
200 mV 62 200 0
300 mV 93 300 0
400 mV 124 400 0
500 mV 155 500 0
600 mV 186 600 0
700 mV 217 700 0
800 mV 248 800 0
900 mV 279 900 0
1000 mV 310 1000 0
1100 mV 341 1100 0
1200 mV 372 1200 0
1300 mV 403 1300 0
1400 mV 434 1400 0
1500 mV 465 1500 0
1600 mV 496 1600 0
1700 mV 527 1700 0
1800 mV 558 1800 0
1900 mV 589 1900 0
2000 mV 620 2000 0
2100 mV 651 2100 0
2200 mV 682 2200 0
2300 mV 713 2300 0
2400 mV 744 2400 0
2500 mV 775 2500 0
2600 mV 806 2600 0
2700 mV 837 2700 0
2800 mV 868 2800 0
2900 mV 899 2900 0
3000 mV 930 3000 0
3100 mV 961 3100 0
3200 mV 992 3200 0
3300 mV 1023 3300 0

Fixed Linear Conversion (32-bit)

ADC Value --> Millivolt --> ADC Value

ADC Value Millivolts (Fixed Point) ADC From mV (Fixed Point) error
0 0 0 0
64 206 63 -1
128 412 127 -1
192 619 191 -1
256 825 255 -1
320 1032 319 -1
384 1238 383 -1
448 1445 447 -1
512 1651 511 -1
576 1858 575 -1
640 2064 639 -1
704 2270 703 -1
768 2477 767 -1
832 2683 831 -1
896 2890 895 -1
960 3096 959 -1
1024 3303 1023 -1

Millivolt --> ADC Value --> Millivolt

MV Value ADC From mV (Fixed Point) Millivolts (Fixed Point) error
0 mV 0 0 0
100 mV 31 100 0
200 mV 62 200 0
300 mV 93 300 0
400 mV 124 400 0
500 mV 155 500 0
600 mV 186 600 0
700 mV 217 700 0
800 mV 248 800 0
900 mV 279 900 0
1000 mV 310 1000 0
1100 mV 341 1100 0
1200 mV 372 1200 0
1300 mV 403 1300 0
1400 mV 434 1400 0
1500 mV 465 1500 0
1600 mV 496 1600 0
1700 mV 527 1700 0
1800 mV 558 1800 0
1900 mV 589 1900 0
2000 mV 620 2000 0
2100 mV 651 2100 0
2200 mV 682 2200 0
2300 mV 713 2300 0
2400 mV 744 2400 0
2500 mV 775 2500 0
2600 mV 806 2600 0
2700 mV 837 2700 0
2800 mV 868 2800 0
2900 mV 899 2900 0
3000 mV 930 3000 0
3100 mV 961 3100 0
3200 mV 992 3200 0
3300 mV 1023 3300 0

Floating Linear Conversion (reference)

ADC Value --> Millivolt --> ADC Value

ADC Value Millivolts (float) ADC From mV (int) error
0 0.00 mV 0 0
64 206.45 mV 64 0
128 412.90 mV 128 0
192 619.35 mV 192 0
256 825.81 mV 256 0
320 1032.26 mV 320 0
384 1238.71 mV 384 0
448 1445.16 mV 448 0
512 1651.61 mV 512 0
576 1858.06 mV 576 0
640 2064.52 mV 640 0
704 2270.97 mV 704 0
768 2477.42 mV 768 0
832 2683.87 mV 832 0
896 2890.32 mV 896 0
960 3096.77 mV 960 0
1024 3303.23 mV 1024 0

Millivolt --> ADC Value --> Millivolt

MV Value ADC From mV (int) Millivolts (float) error
0 mV 0 0.00 mV 0.00
100 mV 31 100.00 mV 0.00
200 mV 62 200.00 mV 0.00
300 mV 93 300.00 mV 0.00
400 mV 124 400.00 mV 0.00
500 mV 155 500.00 mV 0.00
600 mV 186 600.00 mV 0.00
700 mV 217 700.00 mV 0.00
800 mV 248 800.00 mV 0.00
900 mV 279 900.00 mV 0.00
1000 mV 310 1000.00 mV 0.00
1100 mV 341 1100.00 mV 0.00
1200 mV 372 1200.00 mV 0.00
1300 mV 403 1300.00 mV 0.00
1400 mV 434 1400.00 mV 0.00
1500 mV 465 1500.00 mV 0.00
1600 mV 496 1600.00 mV 0.00
1700 mV 527 1700.00 mV 0.00
1800 mV 558 1800.00 mV 0.00
1900 mV 589 1900.00 mV 0.00
2000 mV 620 2000.00 mV 0.00
2100 mV 651 2100.00 mV 0.00
2200 mV 682 2200.00 mV 0.00
2300 mV 713 2300.00 mV 0.00
2400 mV 744 2400.00 mV 0.00
2500 mV 775 2500.00 mV 0.00
2600 mV 806 2600.00 mV 0.00
2700 mV 837 2700.00 mV 0.00
2800 mV 868 2800.00 mV 0.00
2900 mV 899 2900.00 mV 0.00
3000 mV 930 3000.00 mV 0.00
3100 mV 961 3100.00 mV 0.00
3200 mV 992 3200.00 mV 0.00
3300 mV 1023 3300.00 mV 0.00

Linear Conversion (AVR 8-bit e.g. atmega328p)

ADC Millivolt ADC back error
0 0 0 0
64 230 11 -53
128 205 10 -118
192 180 9 -183
0 0 0 0

Fixed Linear Conversion (AVR 8-bit e.g. atmega328p)

ADC Millivolt ADC back error
0 0 0 0
64 230 11 -53
128 205 10 -118
192 180 9 -183
0 0 0 0

Floating Linear Conversion (AVR 32-bit Soft Float float e.g. atmega328p)

ADC Value --> Millivolt --> ADC Value

ADC Value Millivolts (float) ADC From mV (int) error
0.000000 0.00 mV 0 0
64.000000 1254.90 mV 64 0
128.000000 2509.80 mV 128 0
192.000000 3764.71 mV 192 0
256.000000 5019.61 mV 256 0

Millivolt --> ADC Value --> Millivolt

MV Value ADC From mV (int) Millivolts (float) error
0 mV 0 0.00 mV 0.00
100 mV 5 98.04 mV -1.96
200 mV 10 196.08 mV -3.92
300 mV 15 294.12 mV -5.88
400 mV 20 392.16 mV -7.84
500 mV 25 490.20 mV -9.80
600 mV 30 588.24 mV -11.76
700 mV 35 686.27 mV -13.73
800 mV 40 784.31 mV -15.69
900 mV 45 882.35 mV -17.65
1000 mV 51 1000.00 mV 0.00
1100 mV 56 1098.04 mV -1.96
1200 mV 61 1196.08 mV -3.92
1300 mV 66 1294.12 mV -5.88
1400 mV 71 1392.16 mV -7.84
1500 mV 76 1490.20 mV -9.80
1600 mV 81 1588.24 mV -11.76
1700 mV 86 1686.27 mV -13.73
1800 mV 91 1784.31 mV -15.69
1900 mV 96 1882.35 mV -17.65
2000 mV 102 2000.00 mV 0.00
2100 mV 107 2098.04 mV -1.96
2200 mV 112 2196.08 mV -3.92
2300 mV 117 2294.12 mV -5.88
2400 mV 122 2392.16 mV -7.84
2500 mV 127 2490.20 mV -9.80
2600 mV 132 2588.24 mV -11.76
2700 mV 137 2686.27 mV -13.73
2800 mV 142 2784.31 mV -15.69
2900 mV 147 2882.35 mV -17.65
3000 mV 153 3000.00 mV 0.00
3100 mV 158 3098.04 mV -1.96
3200 mV 163 3196.08 mV -3.92
3300 mV 168 3294.12 mV -5.88
3400 mV 173 3392.16 mV -7.84
3500 mV 178 3490.20 mV -9.80
3600 mV 183 3588.24 mV -11.76
3700 mV 188 3686.27 mV -13.73
3800 mV 193 3784.31 mV -15.69
3900 mV 198 3882.35 mV -17.65
4000 mV 204 4000.00 mV 0.00
4100 mV 209 4098.04 mV -1.96
4200 mV 214 4196.08 mV -3.92
4300 mV 219 4294.12 mV -5.88
4400 mV 224 4392.16 mV -7.84
4500 mV 229 4490.20 mV -9.80
4600 mV 234 4588.24 mV -11.76
4700 mV 239 4686.27 mV -13.73
4800 mV 244 4784.31 mV -15.69
4900 mV 249 4882.35 mV -17.65
5000 mV 255 5000.00 mV 0.00

About

Lightweight Linear Mapping Library (e.g. ADC Conversion)

Resources

License

Stars

Watchers

Forks

Packages

No packages published