विषयसूची:
- चरण 1: साईबा मैस
- चरण 2: मोंटे ओ सर्किटो अबाइक्सो
- चरण 3: इंस्टाल ओ कोडिगो नो सेउ अरुडिनो
- चरण 4: उमा यूआई पर्सनालिज़ादा
- चरण 5: द्विदास?
वीडियो: Arduino TDCS सुपर सिंपल। ट्रांसक्रानियल डायरेक्ट करंट स्टिमुलेटर (tDCS) DIY: 5 स्टेप्स
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:21
पैरा फेजर एस्टे टीडीसीएस वोक प्रीसिसारा एपेनस डी उम आर्डिनो, रेसिस्टर, कैपेसिटर और एल्गन्स कैबोसकंपोनेंट्स
-
अरुडिनो
- पिनो डी13 कोमो सैदा पीडब्लूएम (पोड सेर अल्टरैडो)।
- पिनो ए0 कोमो एंटरडा एनालोजिका (प्रति फीडबैक डी कोररेंटे)।
- जीएनडी के लिए पिनो जीएनडी एपनेस।
- रोकनेवाला (~ 470, मास प्रोवेलमेंट एंट्रे 300-1000 funciona, você precisará Alterar no código fonte)
- संधारित्र (220 μF)। पैरा एस्टाबिलाइज़र के साथ पीडब्लूएम परोसें।
- एलेट्रोडोस डी एस्पोंजा (अगुआ सलीना पैरा मोलहा-लो का प्रयोग करें)।
कोमो फंकियोना
ओ अरुडिनो कैलकुला ए कोरेंटे पैड्राओ (पोड सेर अल्टरैडो) क्यू पासारा पेलो सेउ सेरेब्रो एपेनस पोर मुद्रा ए वोल्टेजम डे सैदा। वोक टैम्बेम पोडे अल्टरर या वेलोर डू टारगेट_एमए पेलो सीरियल सीएलआई (कंसोल)।
चरण 1: साईबा मैस
वोक देवे लेर मैस सोब्रे टीडीसीएस प्राइमिरो। इस पर ध्यान दें एफडीए ई पोड सेर प्रेजुडिशियल ए सुआ साडे, प्रिंसिपलमेंट से वोक नाओ सबे नाडा सोबरे ओएस एफिटोस कोलाटेरिस, प्रीक्यूकोस ई डेंट्रे आउट्रोस…
चरण 2: मोंटे ओ सर्किटो अबाइक्सो
अब इस पर चर्चा करें कॉम अगुआ सलीना!
चरण 3: इंस्टाल ओ कोडिगो नो सेउ अरुडिनो
configurações e parametros na área de HARDWARE PARAMS e CONFIGURABLE PARAMS के रूप में लेम्ब्रे-से डे अल्टरर।
वोक टैम्बेम देवे अल्टरर ओ बॉड रेट डू सीरियल पैरा: 115200 पैरा पोडर वर् ओ रिजल्टडो।
पैरा एक्जीक्यूटर कमांडो, ट्रोक ओ नो लाइन एंडिंग पैरा कैरिज रिटर्न।
ओ कोडिगो फोंटे + ट्यूटोरियल टैम्बेम पोडेम सेर एनकंट्राडोस नो रिपॉजिटरी:
कोडिगो:
कॉन्स्ट स्ट्रिंग वर् = "2.0 मी"; // हार्डवेयर पैरामीटर कॉन्स्ट इंट एनालॉगइनपिन = ए0; // एंट्राडा डू एनालोजिको कॉन्स्ट इंट एनालॉगऑटपिन = 13; // सैदा डी१३ पैड्रो फ्लोट मैक्सऑउटवी = ५.०; // एक वोल्टेजम डी सैदा पीडब्लूएम पैड्रो डू अरुडिनो [वी] फ्लोट मैक्सरफइनवी = १.१; // रेफरेंसिया वोल्टेजम एनालोजिका [वी] फ्लोट आर = ४७०.०; // रेसिस्टेंसिया दा कोरेंटे [ओम]
// कॉन्फ़िगर करने योग्य पैराम्स
बूल प्लॉटर = झूठा; // डेफिना: सच, कैसो एस्टेजा उसंडो ओ सीरियल प्लॉटर बूल पुट्टी = झूठा; // डेफिना: ट्रू, कैसो एस्टेजा यूएसंडो या पुटीटी (पॉड सेर अल्टरैडो नो सीएलआई) इंट मैक्समिन = 30; // टेम्पो (एम मिनटोस) आवश्यक पैरा डेस्लीगर [न्यूनतम] फ्लोट टारगेट_एमए = २.७३; // Essa é a corrente que passará pelo seu cérebro!!! [एमए] फ्लोट एप्सिलॉन_एमए = ०.०३; // डिफरेंका मैक्सिमा ने एक वास्तविक वास्तविक ई ओ टारगेट_एमए (नाओ अल्टेरे कासो नो साईबा ओ क्यू एस्टा फेजेंडो!)
// इनिट ग्लोबल्स
इंट स्टेट = 1; /* -1 - सेरेब्रो नो आइडेंटिफाडो 0 - वोल्टेज सेंडो अल्टरडा पैरा डेफिनिर ए कोरेंटे पैड्रो 1 - टूडो सर्टो। Você esta na corrente definida -10 - Voltagem desligada */ float outV = maxOutV; // वोल्टेजम int debounced_state = 0; इंट ज़ीरोस_लेन = 0; फ्लोट चिकना_एमए = 0;
स्ट्रिंग कमांडस्ट्रिंग = ""; // सीएलआई के लिए
// फीडबैक हेल्पर्स
फ्लोट कंप्यूटऑटवोल्टेज (फ्लोट वी, फ्लोट न्यू_एमए) {अगर (एब्स (न्यू_एमए-टारगेट_एमए) मैक्सऑटवी) {स्टेट = -1; // रेसिस्टेंसिया म्यूइटो अल्टा -> सेरेब्रो नो एनकॉन्ट्रैडो? वापसी maxOutV; // रिटर्न मैक्सऑटवी/5.0; // पैरा सेगुरांका} राज्य = 0; वापसी 0.1*new_V+0.9*V; // नया_वी लौटें; }
int कन्वर्टVtoOutputValue (फ्लोट वी) {
वापसी बाधा (int(V/maxOutV*255), 0, 255); }
फ्लोट सेंसरValue2mA (इंट सेंसरवैल्यू) {
फ्लोट सेंसरवोल्टेज = सेंसरवैल्यू/1023.0*maxRefInV; फ्लोट सेंसर_एमए = सेंसर वोल्टेज / आर * 1000.0; वापसी सेंसर_एमए; }
int debounced_state_compute(int State){
अगर (राज्य 5) वापसी 0; } वापसी १; }
अहस्ताक्षरित लंबी शुरुआत, अंत;
शून्य प्रक्रिया_फीडबैक () {इंट सेंसरवैल्यू = एनालॉग रीड (एनालॉगइनपिन); फ्लोट new_mA = sensorValue2mA (सेंसरवैल्यू); चिकना_एमए = 0.2*new_mA+0.8*चिकना_mA; फ्लोट वी = आउटवी; आउटवी = कंप्यूटऑटवोल्टेज (वी, न्यू_एमए); एनालॉगवर्इट (एनालॉगऑटपिन, कन्वर्ट वीटोऑटपुटवैल्यू (आउटवी)); debounced_state = debounced_state_compute (राज्य); // Exibir सूचना कोई CLI endc = (मिलिस () - प्रारंभ)/1000; स्ट्रिंग टीवी = "[", ttm = "mA/", tsm = "V,", ts = "mA] | एस्टाडो: ", h =" | टेम्पो: ", s = ":", लीडएम = "", लीडएस = "", प्लॉट टी = "लक्ष्य:", प्लॉटमा = "\ tSmoothed MA:", प्लॉटमिन = "\ tMin:", टेम्पो; अहस्ताक्षरित लंबा tmin = endc/६०-((endc/६०)% १); // फ़ॉर्मैटाकाओ अगर (endc%60<10) लीडएस = "0"; अगर (टीमिन = 0) टीएस = टीएस + "+"; // Parar autoamente if (tmin>maxmin) stop_device (); स्ट्रिंग txt; अगर (प्लॉटर) txt = प्लॉटटी + टारगेट_एमए + प्लॉटमिन + "0" + प्लॉटमा + स्मूथ_एमए; और txt = tv + V + tsm + smoothed_mA + ttm + target_mA + ts + debounced_state + h + गति; अगर (पोटीन) सीरियल.प्रिंट ("\r\e[?25l" + txt); और सीरियल.प्रिंट्लन (txt);
// अगले लूप से पहले 2 मिलीसेकंड प्रतीक्षा करें
// एनालॉग-टू-डिजिटल कनवर्टर के लिए व्यवस्थित करने के लिए // अंतिम पढ़ने के बाद: देरी (5); }
शून्य स्टॉप_डिवाइस () {
राज्य = -10; एनालॉगवर्इट (एनालॉगऑटपिन, 0); स्पष्ट एंडहोम (); Serial.println ("Sessão tDCS इंटररोम्पिडा"); सीरियल.प्रिंट्लन ("--------------------------"); मदद(); }
// सीएलआई हेल्पर्स
शून्य स्पष्ट और होम () {Serial.write (27); सीरियल.प्रिंट ("[2 जे"); // लिंपा ए टेली सीरियल.राइट (27); // ईएससी सीरियल.प्रिंट ("[एच"); // \r if (! putty) for (int i = 0; i<=30; i++) Serial.println(""); }
शून्य सहायता () {
Serial.println ("tDSC arduino, ver" + ver); Serial.println ("'?' - अजुडा"); Serial.println("'max_time' - atualiza o tempo máximo (em minutos)"); Serial.println ("'target_mA' - लक्ष्य या लक्ष्य (mA)"); Serial.println ("'epsilon_mA' - विशेष रूप से epsilon_mA (mA)"); Serial.println("'R' - atualiza aresistência do हार्डवेयर (ओम)"); Serial.println ("'पोटी' - मुदा ए फॉर्मेटाकाओ डे सैदा प्रो पुट्टी"); Serial.println("'stop' - para a estimulação"); Serial.println("'restart' - inicia/reinicia a estimulação & o टाइमर"); Serial.println ("'जारी रखें' - continua a estimulação"); सीरियल.प्रिंट ("\ n / r एस्टाडो: / n / r * max_time: "); सीरियल.प्रिंट (अधिकतम); Serial.print("minutos\n\r * target_mA:"); सीरियल.प्रिंट (target_mA); सीरियल.प्रिंट ("एमए / n / r * epsilon_mA:"); सीरियल.प्रिंट (ईपीएसलॉन_एमए); सीरियल.प्रिंट ("एमए / n / r * आर:"); सीरियल.प्रिंट (आर); Serial.println ("ओम"); }
बूल पार्स_परम (स्ट्रिंग और cmdString) {
int spacePos = cmdString.indexOf (''); अगर (स्पेसपोस <=0) झूठी वापसी; स्ट्रिंग कमांड = cmdString.substring(0, spacePos); स्ट्रिंग fval = cmdString.substring(spacePos+1); if(command=="putty") if (fval=="true"){ putty = true; सच लौटना; }else if (fval=="false"){ putty = false; सच लौटना; } फ्लोट वैल = fval.toFloat (); अगर (कमांड == "target_mA") {अगर (val100.0) {वापसी झूठी; } target_mA = वैल; स्पष्ट एंडहोम (); मदद(); }else if(command=="epsilon_mA"){ if(val0.3){ return false; } epsilon_mA = वैल; स्पष्ट एंडहोम (); मदद(); }else if(command=="R"){ R = val; स्पष्ट और होम (); मदद(); }else if(command=="max_time"){ maxmin = val; स्पष्ट और होम (); मदद(); } और { झूठी वापसी; } सच लौटें; }
// सेटअप और मुख्य लूप
शून्य सेटअप () {Serial.begin(११५२००); एनालॉग रेफरेंस (आंतरिक); // 1.1 वी सीरियल.प्रिंट ("सेसाओ इनिसियाडा!"); प्रारंभ = मिली (); } शून्य लूप () { अगर (राज्य! = -10) {प्रक्रिया_फीडबैक (); } अगर (सीरियल.उपलब्ध ()> 0){ चार वी = सीरियल.रीड (); अगर (बाइट (v) == 13) {// कैरिज रिटर्न बूल स्वीकृत = सत्य; अगर (कमांडस्ट्रिंग == "?" || कमांडस्ट्रिंग == "स्टॉप") {stop_device (); } और अगर (कमांडस्ट्रिंग == "पुनरारंभ करें") { clearAndHome (); राज्य = -1; आउटवी = मैक्सऑटवी/5.0; प्रारंभ = मिली (); स्वीकृत = झूठा; } और अगर (कमांडस्ट्रिंग == "जारी रखें") {clearAndHome (); राज्य = -1; आउटवी = मैक्सऑटवी/5.0; स्वीकृत = झूठा; } और { बूल ओके = parse_param (कमांडस्ट्रिंग); अगर (! ठीक) { clearAndHome (); मदद(); स्वीकृत = झूठा; Serial.println ("कोमांडो डिस्कोनहेसिडो: '" + कमांडस्ट्रिंग + "'"); } } कमांडस्ट्रिंग = ""; अगर (स्वीकृत) {clearAndHome (); मदद(); Serial.println ("ठीक है!"); }} और {कमांडस्ट्रिंग+=v; अगर (राज्य == -10) {सीरियल प्रिंट (वी); } } } }
चरण 4: उमा यूआई पर्सनालिज़ादा
पैरा मेलोर के साथ-साथ ई सेगुरांका, फेरामेंटा पुटी का उपयोग करें, ई डिफिना नो कोडिगो फोंटे:
पोटीन = सच
निश्चित रूप से सिफारिश करें:
-
खिड़की
- ६१ कोलुनास और २० लिन्हास
- स्क्रॉलबार प्रदर्शित करें
-
विंडो > प्रकटन
फोन्टे: लुसीडा कंसोल, 28px
चरण 5: द्विदास?
पैरा अबिर ए गुआ डे अजुडा, डिजिटे:
?
ई प्रेसिजन [ENTER]
OBS: Caso o Estado सेजा:
-1 -> सेरेब्रो não identificado (corrente aberta)+0 -> Ajustando voltagem+1 -> Tudo certo, tDCS funcionando
सिफारिश की:
अपना खुद का सुपर सिंपल अल्ट्रासोनिक मिस्ट मेकर बनाएं: 4 कदम
मेक योर ओन सुपर सिंपल अल्ट्रासोनिक मिस्ट मेकर: इस प्रोजेक्ट में मैं आपको दिखाऊंगा कि 113kHz अल्ट्रासोनिक पीजोइलेक्ट्रिक डिस्क के लिए एक साधारण ड्राइवर सर्किट कैसे बनाया जाता है। सर्किट में मूल रूप से 555 टाइमर सर्किट, एक MOSFET और कुछ पूरक घटक होते हैं। रास्ते में मैं अल
सुपर सिंपल बैटरी पावर्ड फ्लेम लाइट: 6 स्टेप्स (चित्रों के साथ)
सुपर सिंपल बैटरी पावर्ड फ्लेम लाइट: COVID-19 YouTube द्वि घातुमान के कई घंटों के दौरान मैं एडम सैवेज के वन डे बिल्ड्स के एक एपिसोड से प्रेरित हुआ, विशेष रूप से वह जहां वह अपने होमबिल्ट रिक्शा के लिए गैस लालटेन प्रॉप बनाता है। निर्माण के केंद्र में एक का रूपांतरण था
सुपर सिंपल यूएसबी चार्जर रिपेयर: 4 स्टेप
सुपर सिंपल USB चार्जर रिपेयर: आपके USB चार्जर को उसके जीवनकाल के दौरान खुला पाया जाना …. लेकिन चूंकि चार्जर थोड़े महंगे होते हैं और कभी-कभी घर पर रहना और आपके पास जो कुछ भी है उसका उपयोग करना बेहतर होता है, इसलिए मैंने आपको अपना यूएसबी सी बचाने में मदद करने के लिए यह निर्देश योग्य बनाया है
म्यूजिक रिएक्टिव लाइट -- डेस्कटॉप को शानदार बनाने के लिए सुपर सिंपल म्यूजिक रिएक्टिव लाइट कैसे बनाएं: 5 कदम
म्यूजिक रिएक्टिव लाइट बास जो वास्तव में कम आवृत्ति वाला ऑडियो सिग्नल है। इसे बनाना बहुत आसान है। हम
सुपर सिंपल बिगिनर्स रोबोट !: 17 स्टेप्स (चित्रों के साथ)
सुपर सिंपल बिगिनर्स रोबोट!: '''ROBOT VIDEO''' यहां वीडियो का एक ऑफसाइट लिंक है, जबकि YouTube एम्बेडेड वर्जन को प्रोसेस कर रहा है… मैंने शुरुआती लोगों की संख्या में भारी उछाल देखा है