// K+ion and protein- (bias) building block; general simulation, auto- setup int intraLED=11; int extraLED=9; int KintraLDR=0; //ion int KextraLDR=1; int BintraLDR=4; //bias int BextraLDR=5; int intraOUT; int extraOUT; int correctRC; int correctRV; int cTOL; int vTOL; void setup() { // open the serial connection at // 9600 BAUD Serial.begin(9600); intraOUT = 75; extraOUT = 75; correctRC = 0; correctRV = 0; cTOL = 100; //tolerance for concentration gradient vTOL = 100; //tolerance for voltage gradient //autosetup int correctRC = analogRead(KintraLDR) - analogRead(KextraLDR); int correctRV = analogRead(BintraLDR) - analogRead(BextraLDR); } void loop() { intraOUT = constrain (intraOUT, 2, 150); extraOUT = constrain (extraOUT, 2, 150); //LDR input int intraCON = analogRead(KintraLDR) + correctRC; int extraCON = analogRead(KextraLDR); int intraBIAS = analogRead(BintraLDR) + correctRV; int extraBIAS = analogRead(BextraLDR); // serial print Serial.print("intraCON: "); Serial.print(intraCON); Serial.print(" extraCON: "); Serial.println(extraCON); Serial.print("intraBIAS: "); Serial.print(intraBIAS); Serial.print(" extraBIAS: "); Serial.println(extraBIAS); Serial.println(); // CALCULATION //Concentration gradient int deltaCON = extraCON - intraCON; if (deltaCON >= cTOL) { intraOUT = intraOUT - 1; extraOUT = extraOUT + 1; } if (deltaCON <= -cTOL) { intraOUT = intraOUT + 1; extraOUT = extraOUT - 1; } //voltage gradient // actually charge is defined also by ion! simple version. int intraCHARGE = intraBIAS; int extraCHARGE = extraBIAS; int deltaVOL = extraCHARGE - intraCHARGE; int DV = deltaVOL / 200; if (deltaVOL >= vTOL) { intraOUT = intraOUT + 1; extraOUT = extraOUT - 1; } if (deltaVOL <= -vTOL) { intraOUT = intraOUT - 1; extraOUT = extraOUT + 1; } //OUTPUT analogWrite(intraLED, intraOUT); analogWrite(extraLED, extraOUT); //speed delay(50); }