[code] #include < avr/io.h > #include < avr/interrupt.h > #include < avr/pgmspace.h >
prog_char onda[500] PROGMEM = {0, 6, 11, 17, 23, 28, 34, 40, 45, 51, 57, 62, 68, 73, 79, 85, 90, 96, 102, 107, 113, 118, 124, 130, 135, 141, 146, 152, 158, 163, 169, 174, 180, 185, 191, 196, 202, 207, 213, 218, 224, 229, 235, 240, 246, 251, 257, 262, 267, 273, 278, 283, 289, 294, 300, 305, 310, 315, 321, 326, 331, 337, 342, 347, 352, 357, 363, 368, 373, 378, 383, 388, 393, 398, 404, 409, 414, 419, 424, 429, 434, 439, 443, 448, 453, 458, 463, 468, 473, 477, 482, 487, 492, 496, 501, 506, 511, 515, 520, 524, 529, 534, 538, 543, 547, 552, 556, 561, 565, 569, 574, 578, 582, 587, 591, 595, 599, 604, 608, 612, 616, 620, 624, 628, 632, 636, 640, 644, 648, 652, 656, 660, 664, 668, 671, 675, 679, 683, 686, 690, 693, 697, 701, 704, 708, 711, 715, 718, 721, 725, 728, 731, 735, 738, 741, 744, 748, 751, 754, 757, 760, 763, 766, 769, 772, 775, 778, 780, 783, 786, 789, 791, 794, 797, 799, 802, 804, 807, 809, 812, 814, 817, 819, 821, 824, 826, 828, 830, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 852, 854, 856, 858, 859, 861, 863, 864, 866, 867, 869, 870, 872, 873, 874, 876, 877, 878, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 891, 892, 893, 894, 894, 895, 895, 896, 897, 897, 897, 898, 898, 899, 899, 899, 899, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 899, 899, 899, 899, 898, 898, 897, 897, 897, 896, 895, 895, 894, 894, 893, 892, 891, 891, 890, 889, 888, 887, 886, 885, 884, 883, 882, 881, 880, 878, 877, 876, 874, 873, 872, 870, 869, 867, 866, 864, 863, 861, 859, 858, 856, 854, 852, 851, 849, 847, 845, 843, 841, 839, 837, 835, 833, 830, 828, 826, 824, 821, 819, 817, 814, 812, 809, 807, 804, 802, 799, 797, 794, 791, 789, 786, 783, 780, 778, 775, 772, 769, 766, 763, 760, 757, 754, 751, 748, 744, 741, 738, 735, 731, 728, 725, 721, 718, 715, 711, 708, 704, 701, 697, 693, 690, 686, 683, 679, 675, 671, 668, 664, 660, 656, 652, 648, 644, 640, 636, 632, 628, 624, 620, 616, 612, 608, 604, 599, 595, 591, 587, 582, 578, 574, 569, 565, 561, 556, 552, 547, 543, 538, 534, 529, 524, 520, 515, 511, 506, 501, 496, 492, 487, 482, 477, 473, 468, 463, 458, 453, 448, 443, 439, 434, 429, 424, 419, 414, 409, 404, 398, 393, 388, 383, 378, 373, 368, 363, 357, 352, 347, 342, 337, 331, 326, 321, 315, 310, 305, 300, 294, 289, 283, 278, 273, 267, 262, 257, 251, 246, 240, 235, 229, 224, 218, 213, 207, 202, 196, 191, 185, 180, 174, 169, 163, 158, 152, 146, 141, 135, 130, 124, 118, 113, 107, 102, 96, 90, 85, 79, 73, 68, 62, 57, 51, 45, 40, 34, 28, 23, 17, 11, 6};
int valore=4;//valore feedback desiderato int deadTime=5;
float err; //errore rilevato float t; //tempo di campionamento int Kp=10; // Guadagno proporzionale int Ki=10; // Guadagno Integrale int Kd=1; // Guadagno Derivata float P; //PROPORZIONALE float D; //derivata float I; //INTEGRALE float tempo = 0; float tempoprevisto = tempo; int erroreprevisto = 0; int PID; float feedback;
int pwmOUT; int pwm; volatile int Indice = 0;
void setup() {
pinMode(9,OUTPUT); pinMode(10,OUTPUT); TCCR1A = (1 << WGM12)
|