티스토리 뷰
728x90
반응형
# me - this DAT.
# timerOp - the connected Timer CHOP
# cycle - the cycle index
# segment - the segment index
# fraction - the time in fractional form
#
# interrupt - True if the user initiated a premature
# interrupt, False if a result of a normal timeout.
#
# onInitialize(): if return value > 0, it will be
# called again after the returned number of frames.
def onInitialize(timerOp):
return 0
def onReady(timerOp):
return
def onStart(timerOp):
return
def onTimerPulse(timerOp, segment):
return
def whileTimerActive(timerOp, segment, cycle, fraction):
return
def onSegmentEnter(timerOp, segment, interrupt):
return
def onSegmentExit(timerOp, segment, interrupt):
return
def onCycleStart(timerOp, segment, cycle):
return
def onCycleEndAlert(timerOp, segment, cycle, alertSegment, alertDone, interrupt):
return
def makeNum(i) :
#2자리 수 0채우기
number= str(i+1).zfill(2)
#print(number)
#한자리로 만들기
num_list = list(map(int, str(number)))
num_str=[str(x) for x in num_list]
res = toBin(num_str[0])+','+toBin(num_str[1])
return res
def makeRGB(value) :
value=int(value)
#2자리 수 0채우기
number= str(value).zfill(3)
#print(number)
#한자리로 만들기
num_list = list(map(int, str(number)))
#res=[str(x) for x in num_list]
return num_list[0],num_list[1],num_list[2]
def toBin(dat) :
#아스키 utf-8 이법 바이너리
#print('#motor#',dat)
return bin(ord(str(dat)))
def sendResult(i,MotorDAT,rgb) :
num=makeNum(i)
motor = toBin(MotorDAT)
#rgb value 한자리 씩bin으로 바꾸기
rgb_res=''
for i in range(9) :
x= str(rgb[i])
rgb_res = rgb_res + toBin(x)+','
#print('#',rgb_res)
result = '00000010'+','+ num +','+motor+','+rgb_res+'00000011'
print(result)
return result
def onCycle(timerOp, segment, cycle):
n = op('chopto2') #motor
r = op('chopto3') #RGB
#print('start')
num_col= r.numCols
#print(num_col)
motor=[]
rgb=[]
RGBres=[]
num=0
#motor값 불러오기
for i in range(90):
m=n[0,i]
motor.append(m)
for i in range(num_col):
#rgb
rg=r[0,i]
rgb.append(rg)
for i in range(num_col):
if i%3==0 and i<269:
num=int(i/3)
#print(num)
RGBres= makeRGB(rgb[i])+makeRGB(rgb[i+1])+makeRGB(rgb[i+2])
result=sendResult(num,motor[num],RGBres)
print(result)
op('serial1').send(result)
return
def onDone(timerOp, segment, interrupt):
return
chop 에서 timer를 만들면
이렇게 타이머 callback DAT가 생긴다
별표눌러서 위의 코드를 적어준다.
여기서 chopto2 는 모터 90개고
chopto3는 각 모터에 보낼 rgb값이라 3개씩 90*3 = 270개다 ..
원래는 초록색으로 받은 값을 타이머를 사용해chopto해줘서 과부하 없게 하지만 나는 임시 테이블을 활용했다.
serial을 활용해서 포트넘버로 보내는 형식이다.
리스트를 스트링으로 혹은 int로
각변수의 자료형을 설정해주는게 어려웠다..
원하는 바이너리형식으로 잘 변환되어 출력된다.
728x90
반응형
'TouchDesigner > python' 카테고리의 다른 글
Touchdesinger- 콘다 환경 및 라이브러리 불러오기 (0) | 2024.03.16 |
---|---|
python_to_touchdesinger : json to table (1) | 2022.09.25 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 라즈베리파이
- Midjourney
- Express
- houdini
- RNN
- three.js
- ai film
- sequelize
- TouchDesigner
- krea
- VR
- MQTT
- 유니티
- ai image generator
- DeepLeaning
- Unity
- opencv
- runwayai
- google ai studio
- oculuspro
- CNC
- Python
- 후디니
- imgtoimg
- node.js
- Arduino
- colab
- Java
- docker
- AI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
반응형