import machine
import utime
# Pin to which the first PWM signal is sent
pwm_pin1 = machine.Pin(2) # You can change this pin number
# Pin to which the second PWM signal is sent
pwm_pin2 = machine.Pin(3) # You can change this pin number
# Pin to which the third PWM signal is sent
pwm_pin3 = machine.Pin(4) # You can change this pin number
# Create PWM objects for each pin
pwm1 = machine.PWM(pwm_pin1)
pwm2 = machine.PWM(pwm_pin2)
pwm3 = machine.PWM(pwm_pin3)
# Set PWM frequency (Hz)
pwm1.freq(10000) # You can adjust the frequency as needed
pwm2.freq(10000) # You can adjust the frequency as needed
pwm3.freq(10000) # You can adjust the frequency as needed
# Precomputed sine wave values (32767.0 to 65535.0 range)
sine_wave_values = [32767, 32904, 33041, 33178, 33315, 33453, 33590, 33727, 33864, 34001, 34139, 34276, 34413, 34550, 34687, 34824, 34961, 35098, 35235, 35372, 35508, 35645, 35782, 35918, 36055, 36192, 36328, 36464, 36601, 36737, 36873, 37009, 37145, 37281, 37417, 37553, 37689, 37825, 37960, 38096, 38231, 38366, 38501, 38637, 38772, 38906, 39041, 39176, 39310, 39445, 39579, 39713, 39847, 39981, 40115, 40249, 40382, 40516, 40649, 40782, 40915, 41048, 41181, 41313, 41446, 41578, 41710, 41842, 41974, 42106, 42237, 42369, 42500, 42631, 42761, 42892, 43023, 43153, 43283, 43413, 43542, 43672, 43801, 43930, 44059, 44188, 44317, 44445, 44573, 44701, 44829, 44956, 45084, 45211, 45338, 45464, 45591, 45717, 45843, 45969, 46094, 46219, 46344, 46469, 46594, 46718, 46842, 46966, 47089, 47213, 47336, 47459, 47581, 47704, 47826, 47947, 48069, 48190, 48311, 48432, 48552, 48672, 48792, 48912, 49031, 49150, 49269, 49387, 49505, 49623, 49741, 49858, 49975, 50092, 50208, 50324, 50440, 50555, 50670, 50785, 50899, 51014, 51127, 51241, 51354, 51467, 51580, 51692, 51804, 51915, 52026, 52137, 52248, 52358, 52468, 52577, 52687, 52795, 52904, 53012, 53120, 53227, 53334, 53441, 53547, 53653, 53759, 53864, 53969, 54073, 54177, 54281, 54384, 54487, 54590, 54692, 54794, 54895, 54996, 55097, 55197, 55297, 55396, 55495, 55594, 55692, 55790, 55888, 55985, 56081, 56178, 56273, 56369, 56464, 56558, 56653, 56746, 56840, 56933, 57025, 57117, 57209, 57300, 57391, 57481, 57571, 57660, 57749, 57838, 57926, 58014, 58101, 58188, 58274, 58360, 58446, 58531, 58615, 58700, 58783, 58866, 58949, 59031, 59113, 59195, 59276, 59356, 59436, 59515, 59595, 59673, 59751, 59829, 59906, 59983, 60059, 60135, 60210, 60285, 60359, 60433, 60506, 60579, 60651, 60723, 60794, 60865, 60935, 61005, 61075, 61144, 61212, 61280, 61347, 61414, 61480, 61546, 61612, 61677, 61741, 61805, 61868, 61931, 61993, 62055, 62116, 62177, 62237, 62297, 62356, 62415, 62473, 62531, 62588, 62645, 62701, 62756, 62811, 62866, 62920, 62973, 63026, 63079, 63130, 63182, 63232, 63283, 63332, 63382, 63430, 63478, 63526, 63573, 63620, 63665, 63711, 63756, 63800, 63844, 63887, 63930, 63972, 64014, 64055, 64095, 64135, 64174, 64213, 64252, 64289, 64326, 64363, 64399, 64435, 64470, 64504, 64538, 64571, 64604, 64636, 64668, 64699, 64729, 64759, 64789, 64817, 64846, 64873, 64901, 64927, 64953, 64979, 65003, 65028, 65051, 65075, 65097, 65119, 65141, 65162, 65182, 65202, 65221, 65240, 65258, 65275, 65292, 65308, 65324, 65339, 65354, 65368, 65382, 65394, 65407, 65419, 65430, 65440, 65450, 65460, 65469, 65477, 65485, 65492, 65499, 65505, 65510, 65515, 65519, 65523, 65526, 65529, 65531, 65532, 65533, 65534, 65533, 65532, 65531, 65529, 65526, 65523, 65519, 65515, 65510, 65505, 65499, 65492, 65485, 65477, 65469, 65460, 65450, 65440, 65430, 65419, 65407, 65394, 65382, 65368, 65354, 65339, 65324, 65308, 65292, 65275, 65258, 65240, 65221, 65202, 65182, 65162, 65141, 65119, 65097, 65075, 65051, 65028, 65003, 64979, 64953, 64927, 64901, 64873, 64846, 64817, 64789, 64759, 64729, 64699, 64668, 64636, 64604, 64571, 64538, 64504, 64470, 64435, 64399, 64363, 64326, 64289, 64252, 64213, 64174, 64135, 64095, 64055, 64014, 63972, 63930, 63887, 63844, 63800, 63756, 63711, 63665, 63620, 63573, 63526, 63478, 63430, 63382, 63332, 63283, 63232, 63182, 63130, 63079, 63026, 62973, 62920, 62866, 62811, 62756, 62701, 62645, 62588, 62531, 62473, 62415, 62356, 62297, 62237, 62177, 62116, 62055, 61993, 61931, 61868, 61805, 61741, 61677, 61612, 61546, 61480, 61414, 61347, 61280, 61212, 61144, 61075, 61005, 60935, 60865, 60794, 60723, 60651, 60579, 60506, 60433, 60359, 60285, 60210, 60135, 60059, 59983, 59906, 59829, 59751, 59673, 59595, 59515, 59436, 59356, 59276, 59195, 59113, 59031, 58949, 58866, 58783, 58700, 58615, 58531, 58446, 58360, 58274, 58188, 58101, 58014, 57926, 57838, 57749, 57660, 57571, 57481, 57391, 57300, 57209, 57117, 57025, 56933, 56840, 56746, 56653, 56558, 56464, 56369, 56273, 56178, 56081, 55985, 55888, 55790, 55692, 55594, 55495, 55396, 55297, 55197, 55097, 54996, 54895, 54794, 54692, 54590, 54487, 54384, 54281, 54177, 54073, 53969, 53864, 53759, 53653, 53547, 53441, 53334, 53227, 53120, 53012, 52904, 52795, 52687, 52577, 52468, 52358, 52248, 52137, 52026, 51915, 51804, 51692, 51580, 51467, 51354, 51241, 51127, 51014, 50899, 50785, 50670, 50555, 50440, 50324, 50208, 50092, 49975, 49858, 49741, 49623, 49505, 49387, 49269, 49150, 49031, 48912, 48792, 48672, 48552, 48432, 48311, 48190, 48069, 47947, 47826, 47704, 47581, 47459, 47336, 47213, 47089, 46966, 46842, 46718, 46594, 46469, 46344, 46219, 46094, 45969, 45843, 45717, 45591, 45464, 45338, 45211, 45084, 44956, 44829, 44701, 44573, 44445, 44317, 44188, 44059, 43930, 43801, 43672, 43542, 43413, 43283, 43153, 43023, 42892, 42761, 42631, 42500, 42369, 42237, 42106, 41974, 41842, 41710, 41578, 41446, 41313, 41181, 41048, 40915, 40782, 40649, 40516, 40382, 40249, 40115, 39981, 39847, 39713, 39579, 39445, 39310, 39176, 39041, 38906, 38772, 38637, 38501, 38366, 38231, 38096, 37960, 37825, 37689, 37553, 37417, 37281, 37145, 37009, 36873, 36737, 36601, 36464, 36328, 36192, 36055, 35918, 35782, 35645, 35508, 35372, 35235, 35098, 34961, 34824, 34687, 34550, 34413, 34276, 34139, 34001, 33864, 33727, 33590, 33453, 33315, 33178, 33041, 32904, 32766, 32629, 32492, 32355, 32218, 32080, 31943, 31806, 31669, 31532, 31394, 31257, 31120, 30983, 30846, 30709, 30572, 30435, 30298, 30161, 30025, 29888, 29751, 29615, 29478, 29341, 29205, 29069, 28932, 28796, 28660, 28524, 28388, 28252, 28116, 27980, 27844, 27708, 27573, 27437, 27302, 27167, 27032, 26896, 26761, 26627, 26492, 26357, 26223, 26088, 25954, 25820, 25686, 25552, 25418, 25284, 25151, 25017, 24884, 24751, 24618, 24485, 24352, 24220, 24087, 23955, 23823, 23691, 23559, 23427, 23296, 23164, 23033, 22902, 22772, 22641, 22510, 22380, 22250, 22120, 21991, 21861, 21732, 21603, 21474, 21345, 21216, 21088, 20960, 20832, 20704, 20577, 20449, 20322, 20195, 20069, 19942, 19816, 19690, 19564, 19439, 19314, 19189, 19064, 18939, 18815, 18691, 18567, 18444, 18320, 18197, 18074, 17952, 17829, 17707, 17586, 17464, 17343, 17222, 17101, 16981, 16861, 16741, 16621, 16502, 16383, 16264, 16146, 16028, 15910, 15792, 15675, 15558, 15441, 15325, 15209, 15093, 14978, 14863, 14748, 14634, 14519, 14406, 14292, 14179, 14066, 13953, 13841, 13729, 13618, 13507, 13396, 13285, 13175, 13065, 12956, 12846, 12738, 12629, 12521, 12413, 12306, 12199, 12092, 11986, 11880, 11774, 11669, 11564, 11460, 11356, 11252, 11149, 11046, 10943, 10841, 10739, 10638, 10537, 10436, 10336, 10236, 10137, 10038, 9939, 9841, 9743, 9645, 9548, 9452, 9355, 9260, 9164, 9069, 8975, 8880, 8787, 8693, 8600, 8508, 8416, 8324, 8233, 8142, 8052, 7962, 7873, 7784, 7695, 7607, 7519, 7432, 7345, 7259, 7173, 7087, 7002, 6918, 6833, 6750, 6667, 6584, 6502, 6420, 6338, 6257, 6177, 6097, 6018, 5938, 5860, 5782, 5704, 5627, 5550, 5474, 5398, 5323, 5248, 5174, 5100, 5027, 4954, 4882, 4810, 4739, 4668, 4598, 4528, 4458, 4389, 4321, 4253, 4186, 4119, 4053, 3987, 3921, 3856, 3792, 3728, 3665, 3602, 3540, 3478, 3417, 3356, 3296, 3236, 3177, 3118, 3060, 3002, 2945, 2888, 2832, 2777, 2722, 2667, 2613, 2560, 2507, 2454, 2403, 2351, 2301, 2250, 2201, 2151, 2103, 2055, 2007, 1960, 1913, 1868, 1822, 1777, 1733, 1689, 1646, 1603, 1561, 1519, 1478, 1438, 1398, 1359, 1320, 1281, 1244, 1207, 1170, 1134, 1098, 1063, 1029, 995, 962, 929, 897, 865, 834, 804, 774, 744, 716, 687, 660, 632, 606, 580, 554, 530, 505, 482, 458, 436, 414, 392, 371, 351, 331, 312, 293, 275, 258, 241, 225, 209, 194, 179, 165, 151, 139, 126, 114, 103, 93, 83, 73, 64, 56, 48, 41, 34, 28, 23, 18, 14, 10, 7, 4, 2, 1, 0, 0, 0, 1, 2, 4, 7, 10, 14, 18, 23, 28, 34, 41, 48, 56, 64, 73, 83, 93, 103, 114, 126, 139, 151, 165, 179, 194, 209, 225, 241, 258, 275, 293, 312, 331, 351, 371, 392, 414, 436, 458, 482, 505, 530, 554, 580, 606, 632, 660, 687, 716, 744, 774, 804, 834, 865, 897, 929, 962, 995, 1029, 1063, 1098, 1134, 1170, 1207, 1244, 1281, 1320, 1359, 1398, 1438, 1478, 1520, 1561, 1603, 1646, 1689, 1733, 1777, 1822, 1868, 1913, 1960, 2007, 2055, 2103, 2151, 2201, 2250, 2301, 2351, 2403, 2454, 2507, 2560, 2613, 2667, 2722, 2777, 2832, 2888, 2945, 3002, 3060, 3118, 3177, 3236, 3296, 3356, 3417, 3478, 3540, 3602, 3665, 3728, 3792, 3856, 3921, 3987, 4053, 4119, 4186, 4253, 4321, 4389, 4458, 4528, 4598, 4668, 4739, 4810, 4882, 4954, 5027, 5100, 5174, 5248, 5323, 5398, 5474, 5550, 5627, 5704, 5782, 5860, 5938, 6018, 6097, 6177, 6257, 6338, 6420, 6502, 6584, 6667, 6750, 6833, 6918, 7002, 7087, 7173, 7259, 7345, 7432, 7519, 7607, 7695, 7784, 7873, 7962, 8052, 8142, 8233, 8324, 8416, 8508, 8600, 8693, 8787, 8880, 8975, 9069, 9164, 9260, 9355, 9452, 9548, 9645, 9743, 9841, 9939, 10038, 10137, 10236, 10336, 10436, 10537, 10638, 10739, 10841, 10943, 11046, 11149, 11252, 11356, 11460, 11564, 11669, 11774, 11880, 11986, 12092, 12199, 12306, 12413, 12521, 12629, 12738, 12846, 12956, 13065, 13175, 13285, 13396, 13507, 13618, 13729, 13841, 13953, 14066, 14179, 14292, 14406, 14519, 14634, 14748, 14863, 14978, 15093, 15209, 15325, 15441, 15558, 15675, 15792, 15910, 16028, 16146, 16264, 16383, 16502, 16621, 16741, 16861, 16981, 17101, 17222, 17343, 17464, 17586, 17707, 17829, 17952, 18074, 18197, 18320, 18444, 18567, 18691, 18815, 18939, 19064, 19189, 19314, 19439, 19564, 19690, 19816, 19942, 20069, 20195, 20322, 20449, 20577, 20704, 20832, 20960, 21088, 21216, 21345, 21474, 21603, 21732, 21861, 21991, 22120, 22250, 22380, 22510, 22641, 22772, 22902, 23033, 23164, 23296, 23427, 23559, 23691, 23823, 23955, 24087, 24220, 24352, 24485, 24618, 24751, 24884, 25017, 25151, 25284, 25418, 25552, 25686, 25820, 25954, 26088, 26223, 26357, 26492, 26627, 26761, 26896, 27032, 27167, 27302, 27437, 27573, 27708, 27844, 27980, 28116, 28252, 28387, 28524, 28660, 28796, 28932, 29069, 29205, 29341, 29478, 29615, 29751, 29888, 30025, 30161, 30298, 30435, 30572, 30709, 30846, 30983, 31120, 31257, 31394, 31532, 31669, 31806, 31943, 32080, 32218, 32355, 32492, 32629]
print(f"Number of Elements in the Array: {len(sine_wave_values)}")
# Initialize indices for each pin
index1 = 0
index2 = 169
index3 = 339
# Function to generate PWM using values from the array
def generate_pwm(index, pwm):
# Ensure index is within valid range
if 0 <= index < len(sine_wave_values):
value = int(sine_wave_values[index])
pwm.duty_u16(value)
#print(f"PWM Pin: {pwm} - Value: {value}")
# Auto-increment index (circular)
return (index + 1) % len(sine_wave_values)
else:
return index
# Loop to generate PWM output
while True:
# Generate PWM for each pin using auto-incremented indices
index1 = generate_pwm(index1, pwm1) # Use values from the array
index2 = generate_pwm(index2, pwm2) # Use values from the array
index3 = generate_pwm(index3, pwm3) # Use values from the array
utime.sleep_us(2000) # Adjust the sleep duration as needed