HI,
I have a Flickering issue with my WS2801 using hyperion on my WP2.
I have a small video uploaded to youtube
Externer Inhalt
www.youtube.com
Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
I don't understand why when i watch Live TV there is no flickering but when i'm watch some movies or series 1080p my leds going crazy. (see video)
I don´t know if this is a powersupply issue cause iḿ using a 5v 40A Powersupply for 104 leds so that should be enough.
The beginnig and the end of my stripe is connected also to the powersupply.
The GND of the stripe is connected to my arduino uno.
My hyperion.config.json:
Code
// Automatically generated configuration file for Hyperion ambilight daemon
// Notice: All values are explained with comments at our wiki: wiki.hyperion-project.org (config area)
// Generated by: HyperCon (The Hyperion deamon configuration file builder)
// Created with HyperCon V1.03.1 (11.06.2016)
{
// DEVICE CONFIGURATION
"device" :
{
"name" : "Odroid C2",
"type" : "adalight",
"output" : "/dev/ttyUSB0",
"rate" : 115200,
"delayAfterConnect" : 0,
"colorOrder" : "rgb"
},
// COLOR CALIBRATION CONFIG
"color" :
{
"channelAdjustment" :
[
{
"id" : "default",
"leds" : "*",
"pureRed" :
{
"redChannel" : 53,
"greenChannel" : 0,
"blueChannel" : 0
},
"pureGreen" :
{
"redChannel" : 0,
"greenChannel" : 94,
"blueChannel" : 0
},
"pureBlue" :
{
"redChannel" : 0,
"greenChannel" : 0,
"blueChannel" : 20
}
}
],
"temperature" :
[
{
"id" : "default",
"leds" : "*",
"correctionValues" :
{
"red" : 255,
"green" : 255,
"blue" : 255
}
}
],
"transform" :
[
{
"id" : "default",
"leds" : "*",
"hsl" :
{
"saturationGain" : 1.0000,
"valueGain" : 5.0000
},
"red" :
{
"threshold" : 0.0000,
"gamma" : 2.8200
},
"green" :
{
"threshold" : 0.0000,
"gamma" : 2.8400
},
"blue" :
{
"threshold" : 0.0000,
"gamma" : 2.6200
}
}
],
// SMOOTHING CONFIG
"smoothing" :
{
"type" : "linear",
"time_ms" : 200,
"updateFrequency" : 20.0000,
"updateDelay" : 0
}
},
// NO V4L2 GRABBER CONFIG
// FRAME GRABBER CONFIG
"amlgrabber" :
{
"width" : 64,
"height" : 64,
"frequency_Hz" : 10.0,
"priority" : 799
},
"framegrabber" :
{
"width" : 64,
"height" : 64,
"frequency_Hz" : 10.0,
"priority" : 800
},
// BLACKBORDER CONFIG
"blackborderdetector" :
{
"enable" : true,
"threshold" : 0.0,
"unknownFrameCnt" : 600,
"borderFrameCnt" : 50,
"maxInconsistentCnt" : 10,
"blurRemoveCnt" : 1,
"mode" : "default"
},
// KODI CHECK CONFIG
"xbmcVideoChecker" :
{
"xbmcAddress" : "192.168.178.54",
"xbmcTcpPort" : 8080,
"grabVideo" : true,
"grabPictures" : true,
"grabAudio" : true,
"grabMenu" : true,
"grabPause" : true,
"grabScreensaver" : true,
"enable3DDetection" : false
},
// BOOTEFFECT CONFIG
"bootsequence" :
{
"color" : [0,0,0],
"effect" : "Knight rider",
"duration_ms" : 5000,
"priority" : 700
},
// JSON SERVER CONFIG
"jsonServer" :
{
"port" : 19444
},
// PROTO SERVER CONFIG
"protoServer" :
{
"port" : 19445
},
// JSON/PROTO FORWARD CONFIG
"forwarder" :
{
"json" : ["192.168.178.54:19446"],
"proto" : ["192.168.178.54:19447"]
},
// EFFECT PATH
"effects" :
{
"paths" :
[
"/storage/.kodi/addons/service.hyperion/effects"
]
},
// NO BOBLIGHT SERVER CONFIG
// LED CONFIGURATION
"leds" :
[
{
"index" : 0,
"hscan" : { "minimum" : 0.6389, "maximum" : 0.6667 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 1,
"hscan" : { "minimum" : 0.6667, "maximum" : 0.6944 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 2,
"hscan" : { "minimum" : 0.6944, "maximum" : 0.7222 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 3,
"hscan" : { "minimum" : 0.7222, "maximum" : 0.7500 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 4,
"hscan" : { "minimum" : 0.7500, "maximum" : 0.7778 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 5,
"hscan" : { "minimum" : 0.7778, "maximum" : 0.8056 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 6,
"hscan" : { "minimum" : 0.8056, "maximum" : 0.8333 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 7,
"hscan" : { "minimum" : 0.8333, "maximum" : 0.8611 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 8,
"hscan" : { "minimum" : 0.8611, "maximum" : 0.8889 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 9,
"hscan" : { "minimum" : 0.8889, "maximum" : 0.9167 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 10,
"hscan" : { "minimum" : 0.9167, "maximum" : 0.9444 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 11,
"hscan" : { "minimum" : 0.9444, "maximum" : 0.9722 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 12,
"hscan" : { "minimum" : 0.9722, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 13,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.9524, "maximum" : 1.0000 }
},
{
"index" : 14,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.9048, "maximum" : 0.9524 }
},
{
"index" : 15,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.8571, "maximum" : 0.9048 }
},
{
"index" : 16,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.8095, "maximum" : 0.8571 }
},
{
"index" : 17,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.7619, "maximum" : 0.8095 }
},
{
"index" : 18,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.7143, "maximum" : 0.7619 }
},
{
"index" : 19,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.6667, "maximum" : 0.7143 }
},
{
"index" : 20,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.6190, "maximum" : 0.6667 }
},
{
"index" : 21,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.5714, "maximum" : 0.6190 }
},
{
"index" : 22,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.5238, "maximum" : 0.5714 }
},
{
"index" : 23,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.4762, "maximum" : 0.5238 }
},
{
"index" : 24,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.4286, "maximum" : 0.4762 }
},
{
"index" : 25,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.3810, "maximum" : 0.4286 }
},
{
"index" : 26,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.3333, "maximum" : 0.3810 }
},
{
"index" : 27,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.2857, "maximum" : 0.3333 }
},
{
"index" : 28,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.2381, "maximum" : 0.2857 }
},
{
"index" : 29,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.1905, "maximum" : 0.2381 }
},
{
"index" : 30,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.1429, "maximum" : 0.1905 }
},
{
"index" : 31,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.0952, "maximum" : 0.1429 }
},
{
"index" : 32,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.0476, "maximum" : 0.0952 }
},
{
"index" : 33,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0476 }
},
{
"index" : 34,
"hscan" : { "minimum" : 0.9722, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 35,
"hscan" : { "minimum" : 0.9444, "maximum" : 0.9722 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 36,
"hscan" : { "minimum" : 0.9167, "maximum" : 0.9444 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 37,
"hscan" : { "minimum" : 0.8889, "maximum" : 0.9167 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 38,
"hscan" : { "minimum" : 0.8611, "maximum" : 0.8889 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 39,
"hscan" : { "minimum" : 0.8333, "maximum" : 0.8611 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 40,
"hscan" : { "minimum" : 0.8056, "maximum" : 0.8333 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 41,
"hscan" : { "minimum" : 0.7778, "maximum" : 0.8056 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 42,
"hscan" : { "minimum" : 0.7500, "maximum" : 0.7778 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 43,
"hscan" : { "minimum" : 0.7222, "maximum" : 0.7500 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 44,
"hscan" : { "minimum" : 0.6944, "maximum" : 0.7222 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 45,
"hscan" : { "minimum" : 0.6667, "maximum" : 0.6944 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 46,
"hscan" : { "minimum" : 0.6389, "maximum" : 0.6667 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 47,
"hscan" : { "minimum" : 0.6111, "maximum" : 0.6389 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 48,
"hscan" : { "minimum" : 0.5833, "maximum" : 0.6111 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 49,
"hscan" : { "minimum" : 0.5556, "maximum" : 0.5833 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 50,
"hscan" : { "minimum" : 0.5278, "maximum" : 0.5556 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 51,
"hscan" : { "minimum" : 0.5000, "maximum" : 0.5278 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 52,
"hscan" : { "minimum" : 0.4722, "maximum" : 0.5000 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 53,
"hscan" : { "minimum" : 0.4444, "maximum" : 0.4722 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 54,
"hscan" : { "minimum" : 0.4167, "maximum" : 0.4444 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 55,
"hscan" : { "minimum" : 0.3889, "maximum" : 0.4167 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 56,
"hscan" : { "minimum" : 0.3611, "maximum" : 0.3889 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 57,
"hscan" : { "minimum" : 0.3333, "maximum" : 0.3611 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 58,
"hscan" : { "minimum" : 0.3056, "maximum" : 0.3333 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 59,
"hscan" : { "minimum" : 0.2778, "maximum" : 0.3056 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 60,
"hscan" : { "minimum" : 0.2500, "maximum" : 0.2778 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 61,
"hscan" : { "minimum" : 0.2222, "maximum" : 0.2500 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 62,
"hscan" : { "minimum" : 0.1944, "maximum" : 0.2222 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 63,
"hscan" : { "minimum" : 0.1667, "maximum" : 0.1944 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 64,
"hscan" : { "minimum" : 0.1389, "maximum" : 0.1667 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 65,
"hscan" : { "minimum" : 0.1111, "maximum" : 0.1389 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 66,
"hscan" : { "minimum" : 0.0833, "maximum" : 0.1111 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 67,
"hscan" : { "minimum" : 0.0556, "maximum" : 0.0833 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 68,
"hscan" : { "minimum" : 0.0278, "maximum" : 0.0556 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 69,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0278 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 70,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0476 }
},
{
"index" : 71,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.0476, "maximum" : 0.0952 }
},
{
"index" : 72,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.0952, "maximum" : 0.1429 }
},
{
"index" : 73,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.1429, "maximum" : 0.1905 }
},
{
"index" : 74,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.1905, "maximum" : 0.2381 }
},
{
"index" : 75,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.2381, "maximum" : 0.2857 }
},
{
"index" : 76,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.2857, "maximum" : 0.3333 }
},
{
"index" : 77,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.3333, "maximum" : 0.3810 }
},
{
"index" : 78,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.3810, "maximum" : 0.4286 }
},
{
"index" : 79,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.4286, "maximum" : 0.4762 }
},
{
"index" : 80,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.4762, "maximum" : 0.5238 }
},
{
"index" : 81,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.5238, "maximum" : 0.5714 }
},
{
"index" : 82,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.5714, "maximum" : 0.6190 }
},
{
"index" : 83,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.6190, "maximum" : 0.6667 }
},
{
"index" : 84,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.6667, "maximum" : 0.7143 }
},
{
"index" : 85,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.7143, "maximum" : 0.7619 }
},
{
"index" : 86,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.7619, "maximum" : 0.8095 }
},
{
"index" : 87,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.8095, "maximum" : 0.8571 }
},
{
"index" : 88,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.8571, "maximum" : 0.9048 }
},
{
"index" : 89,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.9048, "maximum" : 0.9524 }
},
{
"index" : 90,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.9524, "maximum" : 1.0000 }
},
{
"index" : 91,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0278 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 92,
"hscan" : { "minimum" : 0.0278, "maximum" : 0.0556 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 93,
"hscan" : { "minimum" : 0.0556, "maximum" : 0.0833 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 94,
"hscan" : { "minimum" : 0.0833, "maximum" : 0.1111 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 95,
"hscan" : { "minimum" : 0.1111, "maximum" : 0.1389 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 96,
"hscan" : { "minimum" : 0.1389, "maximum" : 0.1667 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 97,
"hscan" : { "minimum" : 0.1667, "maximum" : 0.1944 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 98,
"hscan" : { "minimum" : 0.1944, "maximum" : 0.2222 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 99,
"hscan" : { "minimum" : 0.2222, "maximum" : 0.2500 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 100,
"hscan" : { "minimum" : 0.2500, "maximum" : 0.2778 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 101,
"hscan" : { "minimum" : 0.2778, "maximum" : 0.3056 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 102,
"hscan" : { "minimum" : 0.3056, "maximum" : 0.3333 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 103,
"hscan" : { "minimum" : 0.3333, "maximum" : 0.3611 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
}
],
"endOfJson" : "endOfJson"
}
Alles anzeigen
My Arduino Sketch:
C
// Slightly modified Adalight protocol implementation that uses FastLED
// library (http://fastled.io) for driving WS2811/WS2812 led stripe
// Was tested only with Prismatik software from Lightpack project (version 5.9.1, 5.9.6 and 5.11.1 so far - 5.11.1 has some issues on startup in windows so I'm not using it)
#include "FastLED.h"
#define NUM_LEDS 104 // Max LED count
#define DATA_PIN 13 // arduino output pin - probably not required for WS2801
#define CLOCK_PIN 11 // probably not required for WS2801
#define BRIGHTNESS 255 // maximum brightness
#define SPEED 115200 // virtual serial port speed, must be the same in boblight_config
CRGB leds[NUM_LEDS];
uint8_t * ledsRaw = (uint8_t *)leds;
// A 'magic word' (along with LED count & checksum) precedes each block
// of LED data; this assists the microcontroller in syncing up with the
// host-side software and properly issuing the latch (host I/O is
// likely buffered, making usleep() unreliable for latch). You may see
// an initial glitchy frame or two until the two come into alignment.
// The magic word can be whatever sequence you like, but each character
// should be unique, and frequent pixel values like 0 and 255 are
// avoided -- fewer false positives. The host software will need to
// generate a compatible header: immediately following the magic word
// are three bytes: a 16-bit count of the number of LEDs (high byte
// first) followed by a simple checksum value (high byte XOR low byte
// XOR 0x55). LED data follows, 3 bytes per LED, in order R, G, B,
// where 0 = off and 255 = max brightness.
static const uint8_t magic[] = {'A', 'd', 'a'};
#define MAGICSIZE sizeof(magic)
#define HEADERSIZE (MAGICSIZE + 3)
#define MODE_HEADER 0
#define MODE_DATA 2
// If no serial data is received for a while, the LEDs are shut off
// automatically. This avoids the annoying "stuck pixel" look when
// quitting LED display programs on the host computer.
static const unsigned long serialTimeout = 150000; // 150 seconds
void setup()
{
// pinMode(GROUND_PIN, OUTPUT);
// digitalWrite(GROUND_PIN, LOW);
// FastLED.addLeds<WS2811, LED_PIN, BRG>(leds, NUM_LEDS);
FastLED.addLeds<WS2801,13, 11, RBG>(leds, NUM_LEDS);
// Dirty trick: the circular buffer for serial data is 256 bytes,
// and the "in" and "out" indices are unsigned 8-bit types -- this
// much simplifies the cases where in/out need to "wrap around" the
// beginning/end of the buffer. Otherwise there'd be a ton of bit-
// masking and/or conditional code every time one of these indices
// needs to change, slowing things down tremendously.
uint8_t
buffer[256],
indexIn = 0,
indexOut = 0,
mode = MODE_HEADER,
hi, lo, chk, i, spiFlag;
int16_t
bytesBuffered = 0,
hold = 0,
c;
int32_t
bytesRemaining;
unsigned long
startTime,
lastByteTime,
lastAckTime,
t;
int32_t outPos = 0;
Serial.begin(SPEED); // Teensy/32u4 disregards baud rate; is OK!
Serial.print("Ada\n"); // Send ACK string to host
startTime = micros();
lastByteTime = lastAckTime = millis();
// loop() is avoided as even that small bit of function overhead
// has a measurable impact on this code's overall throughput.
for (;;) {
// Implementation is a simple finite-state machine.
// Regardless of mode, check for serial input each time:
t = millis();
if ((bytesBuffered < 256) && ((c = Serial.read()) >= 0)) {
buffer[indexIn++] = c;
bytesBuffered++;
lastByteTime = lastAckTime = t; // Reset timeout counters
} else {
// No data received. If this persists, send an ACK packet
// to host once every second to alert it to our presence.
if ((t - lastAckTime) > 1000) {
Serial.print("Ada\n"); // Send ACK string to host
lastAckTime = t; // Reset counter
}
// If no data received for an extended time, turn off all LEDs.
if ((t - lastByteTime) > serialTimeout) {
memset(leds, 0, NUM_LEDS * sizeof(struct CRGB)); //filling Led array by zeroes
FastLED.show();
lastByteTime = t; // Reset counter
}
}
switch (mode) {
case MODE_HEADER:
// In header-seeking mode. Is there enough data to check?
if (bytesBuffered >= HEADERSIZE) {
// Indeed. Check for a 'magic word' match.
for (i = 0; (i < MAGICSIZE) && (buffer[indexOut++] == magic[i++]););
if (i == MAGICSIZE) {
// Magic word matches. Now how about the checksum?
hi = buffer[indexOut++];
lo = buffer[indexOut++];
chk = buffer[indexOut++];
if (chk == (hi ^ lo ^ 0x55)) {
// Checksum looks valid. Get 16-bit LED count, add 1
// (# LEDs is always > 0) and multiply by 3 for R,G,B.
bytesRemaining = 3L * (256L * (long)hi + (long)lo + 1L);
bytesBuffered -= 3;
outPos = 0;
memset(leds, 0, NUM_LEDS * sizeof(struct CRGB));
mode = MODE_DATA; // Proceed to latch wait mode
} else {
// Checksum didn't match; search resumes after magic word.
indexOut -= 3; // Rewind
}
} // else no header match. Resume at first mismatched byte.
bytesBuffered -= i;
}
break;
case MODE_DATA:
if (bytesRemaining > 0) {
if (bytesBuffered > 0) {
if (outPos < sizeof(leds))
ledsRaw[outPos++] = buffer[indexOut++]; // Issue next byte
bytesBuffered--;
bytesRemaining--;
}
// If serial buffer is threatening to underrun, start
// introducing progressively longer pauses to allow more
// data to arrive (up to a point).
} else {
// End of data -- issue latch:
startTime = micros();
mode = MODE_HEADER; // Begin next header search
FastLED.show();
}
} // end switch
} // end for(;;)
}
void loop()
{
}
Alles anzeigen
I hope that anyone can help me cause i don't know how to solve this.....
Thanks!